java - Spring Boot 测试无法解决存储库依赖关系

标签 java spring spring-boot spring-test

我有一个 UserRepository,它是一个 CRUD 存储库,如下所示:

@Repository
public 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: Failed to load ApplicationContext Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'repository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Cannot create inner bean '(inner bean)#7ba1cdbe' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#7ba1cdbe': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Cannot create inner bean '(inner bean)#7ba1cdbe' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#7ba1cdbe': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#7ba1cdbe': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available

最佳答案

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

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

关于java - Spring Boot 测试无法解决存储库依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57361434/

相关文章:

java - Spring HATEOAS RepresentationModel,无法设置属性链接,因为没有 setter ,没有枯萎,它不是持久性构造函数的一部分

java - 使用Java将图像上传到MySql数据库

java - 如何将RSA私钥存储到后端给出的应用程序中?

java - 无法返回数据

java - 自定义 Spring UserDetailsS​​ervice 未调用

java - 当我使用 @RequiredArgsConstructor 时,变量可能尚未初始化

java - 比较扩展相同父类(super class)的类

java - 如何为ProxyFactoryBean设置多个目标并根据Config调用其中一个目标方法?

spring - 如何使 WireMock 端口更具动态性以将其用于测试服务

java - 同时从两个不同线程插入/更新实体