Spring启动测试 - 等待终止

时间:2016-08-29 14:24:54

标签: java spring-boot

我有一个用Spring启动的应用程序,我正在尝试为它编写一些集成测试。我想运行我的spring启动应用程序并等到它终止,这样我就能断言某些状态。

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(MyApp.class)
@IntegrationTest("initParams")
public class Test {
  @Test
  public void test() {
    // need to wait until termination
  }

有没有办法可以在不修改应用程序代码的情况下等待Spring应用程序的终止?

2 个答案:

答案 0 :(得分:1)

我不确定这是不是一个好主意,但现在是:您可以使用@After@AfterClass方法执行某些断言?

@After
public void afterMethods() {
    //asserts
}

@AfterClass 
public static void afterClass() {
    //asserts
}

答案 1 :(得分:1)

如果您的测试需要应用程序终止,那么最好在测试中实际运行应用程序,而不是让测试上下文为您启动它。我不确定你为什么需要它,我不会推荐它用于所有用例,但这可能有效:

public class Test {

  @Test
  public void test() {
    String[] args = new String[]{"initParams"}; // To adapt
    ConfigurableApplicationContext ctx = SpringApplication.run(MyApp.class, args);
    // whatever
    ctx.close();
    // whatever after the app has terminated.
  }
}