频道
bg

Junit TestInstance

coding十二月 05, 20211mins
Java Test

测试的时候需要准备测试环境,通常通过beforeAllbeforeEach 来初始化,他俩分别时在测试类初始化的时候以及每个Test方法执行前被调用。

一般情况下这不是什么问题,但是在Spring的测试环境下会遇到些问题,比如某个类依赖于Spring注入的某个实例,这就导致不能使用beforeAll ,因为这个时候Spring上下文都没有初始化好,没法注入;这就导致只能使用beforeEach ,但是如果该类初始化的又比较大,逻辑较复杂,初始化的成本较高,每次执行测试方法前执行导致效率比较低下,该怎么办。

其实就是说,如何定义一个实例级别的setup

@TestInstance has two modes.

  • One is LifeCycle.PER_METHOD(the default).
  • The other is Lifecycle.PER_CLASS.

The latter enables us to ask JUnit to create only one instance of the test class and reuse it between tests.

bash

@TestInstance(Lifecycle.PER_CLASS)
class TweetSerializerUnitTest {
private String largeContent;
@BeforeAll
void setUpFixture() {
// read the file
}
}

评论


新的评论

匹配您的Gravatar头像

Joen Yu

@2022 JoenYu, all rights reserved. Made with love.