我有一个用Spring启动的应用程序,我正在尝试为它编写一些集成测试。我想运行我的spring启动应用程序并等到它终止,这样我就能断言某些状态。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(MyApp.class)
@IntegrationTest("initParams")
public class Test {
@Test
public void test() {
// need to wait until termination
}
有没有办法可以在不修改应用程序代码的情况下等待Spring应用程序的终止?
答案 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.
}
}