我正在尝试为 SpringBoot 应用程序编写集成测试。代码如下所示
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {Application.class, MyTestConfig.class})
@ActiveProfile("test")
class MyIntegrationTest {
@Autowire
ServiceInterface serviceA;
}
我注意到 applicationContext 加载一些服务 bean 作为 Mockito 模拟对象,这确实违背了集成测试的目的,因为它不执行一些代码。谁能建议这里可能出了什么问题。请注意,某些服务已正确自动连接,但有些服务正在被 mock 。我看不出它们的行为有何不同的任何逻辑原因,因为它们的实现方式相同。我使用的是 Spring Boot 2.0.3
已经尝试过。
删除了 MyTestConfig.class 但问题仍然相同。即使我使用 @SpringBootTest(classes = {Application.class, MyProblematicServiceImpl.class}),它仍然会在 Autowiring 的地方返回模拟对象。 MyProblematicServiceImpl 是用 @Service 注释的空类。
最佳答案
查看docs ,如果您将SpringBootTest注释上的webEnvironment设置设置为默认的MOCK之外的其他内容,那么它将启动一个真正的Web环境。
关于java - Spring Boot 集成测试 - 不需要的模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56811908/