2

@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' 分别打印一次。

4

1 回答 1

5

这是 JUnit 的标准生命周期。在调用每个测试方法之前会创建一个新的类实例。创建该实例需要调用测试类的构造函数。鉴于已经调用了构造函数,那么调用任何 @PostConstruct 方法都是有意义的。

于 2017-09-29T06:37:33.053 回答