【发布时间】:2020-11-30 11:13:47
【问题描述】:
执行 Spring Boot 应用程序的 JUnit 测试会导致应用程序的测试上下文在调用测试时启动。有没有办法针对已经启动的 Spring Boot 应用程序运行此测试,而无需为测试启动第二个应用程序上下文?例如,是否可以指示测试框架使用已经启动的现有应用程序上下文?
@SpringBootTest
@RunWith(SpringRunner.class)
public class MyAppTests {
@Autowired
public SomeService someService;
@Test
public void testInjection() throws AssertionError {
Assert.assertTrue(someService != null);
}
}
【问题讨论】:
-
不清楚您要测试什么。暂时忘记您正在使用弹簧靴。您是想针对已经在运行的真实应用程序进行测试并将其视为黑盒,还是想通过用模拟或存根替换某些部分来测试真实应用程序的某些部分?
-
我想从容器服务中定期对容器运行 api 测试,例如通过绑定到 /execute-all-api-tests 之类的 URL 的 rest 控制器,它将在成功时返回 200 响应或在失败时返回错误,然后可以将其与 Web 监控集成以检测 API 何时无法正常运行。这些基本上是在操作环境中运行的集成测试。
标签: spring spring-boot testing junit integration