为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Boot 测试无法解决存储库依赖性

Spring Boot 测试无法解决存储库依赖性

侃侃无极 2023-05-17 14:58:30
我有一个 UserRepository,它是一个 CRUD 存储库,如图所示:@Repositorypublic interface UserRepository extends CrudRepository<User, Long> {}像这样的一个 UserController:@RestController@RequestMapping("/api")public class UserController {    @Autowired    private UserRepository repository;    @Autowired    private UserResourceAssembler assembler;和一个 WebMvcTest 类来测试我的 UserController:@RunWith(SpringRunner.class)@WebMvcTest(UserController.class)public class UserControllerTest {  @Autowired  private MockMvc mvc;  @Test  public void getAllEmployeesAPI() throws Exception  {    mvc.perform( MockMvcRequestBuilders        .get("/api/users")        .accept(MediaType.APPLICATION_JSON))        .andDo(print())        .andExpect(status().isOk());  }}当我运行服务器时,一切都很好。但是,当我运行 maven-test 时出现此错误:java.lang.IllegalStateException:无法加载 ApplicationContext Caused by:org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为“userController”的 bean 时出错:通过字段“repository”表达的依赖关系不满足;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名称为“userRepository”的 bean 时出错:设置 bean 时无法创建 [org.springframework.orm.jpa.SharedEntityManagerCreator] 类型的内部 bean“(内部 bean)#7ba1cdbe”属性“实体管理器”;嵌套异常是 org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#7ba1cdbe': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; 嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有名为“entityManagerFactory”的 bean 可用 原因:org.springframework.beans.factory.BeanCreationException:创建名为“userRepository”的 bean 时出错:无法创建内部 bean“(内部 bean )#7ba1cdbe'类型为[org.springframework.orm.jpa.SharedEntityManagerCreator]同时设置bean属性'entityManager'; 嵌套异常是 
查看完整描述

2 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

如果你现在有相同的结构,我推荐@SpringBootTest.

@WebMvcTest不会将与数据库相关的 bean 加载到应用程序上下文中。


查看完整回答
反对 回复 2023-05-17
?
月关宝盒

TA贡献1772条经验 获得超5个赞

@WebMvcTest只加载 Web 层。如果它包含一些依赖项,您还需要加载您的应用程序上下文。您可以缩小仅在您的控制器中使用的依赖项@ContextConfiguration(classes = {YouTestConfiguration.class})



查看完整回答
反对 回复 2023-05-17
  • 2 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信