我有一个使用Spring Boot编写的应用程序,并且正在尝试为其编写一些集成测试。我想运行我的spring boot应用程序并等待它终止,以便我可以断言某些状态。

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


有什么方法可以等待Spring应用程序终止而无需修改应用程序代码?

最佳答案

如果您需要测试终止应用程序的测试,最好将应用程序作为测试的一部分来运行,而不是让测试上下文为您启动它。我不确定您为什么需要它,并且我不会在所有用例中都推荐它,但这可以起作用:

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.
  }
}

10-05 22:46
查看更多