我在运行测试之前使用@PostConstruct
进行一些初始设置,但似乎@PostConstruct
方法在每个测试中运行,而不是在初始化测试类之后运行一次。我还看到在@PostConstruct
之前的每个测试之前都调用了构造函数。为什么在每个@Test方法上初始化测试类而不只是一次?
我正在使用spring-boot-starter-test:1.5.7.RELEASE
样本测试设置:
@RunWith(SpringRunner.class)
public class TestClass {
public TestClass() {
System.out.println("constructor");
}
@PostConstruct
public void setup() {
System.out.println("setting up");
}
@Test
public void test1() {
System.out.println("test 1");
}
@Test
public void test2() {
System.out.println("test 2");
}
}
在输出中,“构造函数”打印两次,“设置”打印两次。每次打印“test 1”和“test 2”。
答案 0 :(得分:3)
这是JUnit的标准生命周期。在调用每个测试方法之前,将创建该类的新实例。创建该实例需要调用测试类的构造函数。鉴于构造函数已被调用,因此调用任何@PostConstruct方法都是有意义的。