如何使用Junit配置SpringBoot的per-test-method实例化?

时间:2017-02-16 09:39:04

标签: java spring-boot

我有一个单元测试,它为JUnit测试类实例化一次应用程序:

@RunWith(SpringRunner.class)
@SpringBootTest(properties = "server.port=9000",
        classes = Application.class,
        webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class TodoWebDriverTest {
  // many test methods
}

但我希望拆除并实例化应用程序(套接字监听器'所有)每个测试方法。我目前依赖于几个注释(见上文),但很乐意放弃它们以获得可靠的纯Java启动/启动功能:

app = SpringSomething.prepare(Appication.class, other params);
app.start();
waitForProofOfBeingStarted(app);

在这里,我分享了其他人的应用程序 - https://github.com/paul-hammant/todo-backend-spring4-java8 - 并添加了线程模拟(没有服务虚拟化框架)和三个WebDriver测试。总而言之,构建大约需要30秒。 这显示了每次测试一次的应用程序设置,并且朝着更大的解决方案展示管道中的多个Junit测试阶段,但我需要将其翻转为一次-test-method app setup

1 个答案:

答案 0 :(得分:1)

你想要@DirtiesContext annotation

@RunWith(SpringRunner.class)
@SpringBootTest(properties = "server.port=9000",
        classes = Application.class,
        webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@DirtiesContext(classMode = BEFORE_EACH_TEST_METHOD)
public class TodoWebDriverTest {
  // many test methods
}