Spring Annotation @WebMvcTest 在具有 Jpa 存储库的应用程序中不起作用

dic*_*kyj 8 spring spring-mvc spring-data-jpa spring-test-mvc spring-boot

我有一个使用 JPA 存储库(CrudRepository接口)的 Spring 应用程序。当我尝试使用新的 Spring 测试语法测试我的控制器时@WebMvcTest(MyController.class),它失败了,因为它试图实例化我的一个使用 JPA 存储库的服务类,有没有人知道如何解决这个问题?该应用程序在我运行时有效。

这是错误:

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of constructor in com.myapp.service.UserServiceImpl required a bean of type 'com.myapp.repository.UserRepository' that could not be found.

Action:

Consider defining a bean of type 'com.myapp.repository.UserRepository' in your configuration.
Run Code Online (Sandbox Code Playgroud)

Lip*_*ang 12

根据文档

使用此注释将禁用完全自动配置,而是仅应用与 MVC 测试相关的配置(即 @Controller、@ControllerAdvice、@JsonComponent Filter、WebMvcConfigurer 和 HandlerMethodArgumentResolver bean,但不应用 @Component、@Service 或 @Repository bean)。

该注解仅适用于 Spring MVC 组件。

如果您希望加载完整的应用程序配置并使用 MockMVC,您应该考虑@SpringBootTest结合 with@AutoConfigureMockMvc而不是这个注解。