java - Spring Boot 集成测试 - 不需要的模拟

标签 java spring spring-boot

我正在尝试为 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/

相关文章:

java - Spring 如何创建应用程序上下文或容器层次结构?

java - Spring Data JPA 与事务

java - @GetMapping 不序列化 ID

java - 记录测试驱动开发的网络流量

java - 打印递归树

java - TestNG 从一个类中获取所有禁用的测试

java - 异常后 hibernate session 对象

java - 在 Spring-MVC 中显示 JSP 页面时出现问题

spring boot https PKCS12 DerInputStream.getLength() : lengthTag=111, 太大

java - spring-boot拦截器没有拦截