Junit中的Before和BeforeClass
@Before
注解所标记的函数会在拥有@Test
注解的类中每个测试函数执行前被调用,而具有@BeforeClass
注解的函数只会在该类中所有测试函数之前被调用一次。
同样地,带有@After
注解的函数会在拥有@Test
注解的类中每个测试函数执行后被调用,而具有@AfterClass
注解的函数只会在该类中所有测试函数结束后被调用一次。
示例类
public class SampleClass {
public String initializeData(){
return "Initialize";
}
public String processDate(){
return "Process";
}
}
示例测试
public class SampleTest {
private SampleClass sampleClass;
@BeforeClass
public static void beforeClassFunction(){
System.out.println("Before Class");
}
@Before
public void beforeFunction(){
sampleClass=new SampleClass();
System.out.println("Before Function");
}
@After
public void afterFunction(){
System.out.println("After Function");
}
@AfterClass
public static void afterClassFunction(){
System.out.println("After Class");
}
@Test
public void initializeTest(){
Assert.assertEquals("Initailization check", "Initialize", sampleClass.initializeData() );
}
@Test
public void processTest(){
Assert.assertEquals("Process check", "Process", sampleClass.processDate() );
}
}
输出
Before Class
Before Function
After Function
Before Function
After Function
After Class
在 Junit 5 中
@Before = @BeforeEach
@BeforeClass = @BeforeAll
@After = @AfterEach
@AfterClass = @AfterAll
@BeforeClass
是静态的,在创建测试类实例之前运行。 - Sergey Kalinichenko@BeforeAll
可能是非静态的,并且在每次新的测试实例运行时调用。请参见相应的答案 https://dev59.com/xlMI5IYBdhLWcg3wn9D6#55720750。 - Sergey