当前位置: 首页 > 知识库问答 >
问题:

spring boot测试无法解析存储库依赖关系

秦雅逸
2023-03-14

我有一个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:未能加载ApplicationContext,原因是:org.SpringFramework.Beans.Factory.UnsatisfiedDependencyException:创建名为“User Controller”的bean时出错:通过字段“repository”表示的不满足依赖项;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建名为“User Repository”的bean时出错:设置bean属性“Entity Manager”时无法创建类型为[org.springframework.orm.jpa.SharedEntityManagerCreator]的内部bean“(内部bean)#7BA1CDBE”;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建名为“(内部bean)#7BA1CDBE”的bean时出错:设置构造函数参数时无法解析对bean“Entity ManagerFactory”的引用;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:没有名为“Entity ManagerFactory”的bean可用,原因是:org.springframework.beans.factory.beanCreationException:创建名为“User Repository”的bean时出错:设置bean属性“Entity Manager”时无法创建类型为[org.springframework.orm.jpa.SharedEntityManagerCreator]的内部bean“(内部bean)#7BA1CDBE”;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建名为“(内部bean)#7BA1CDBE”的bean时出错:设置构造函数参数时无法解析对bean“Entity ManagerFactory”的引用;嵌套异常为org.springframework.beans.factory.noSuchBeanDefinitionException:没有名为“Entity ManagerFactory”的bean可用,原因是:org.springframework.beans.factory.beanCreationException:创建名为“(内部bean)#7BA1CDBE”的bean时出错:设置构造函数参数时无法解析对bean“Entity ManagerFactory”的引用;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:没有名为“Entity ManagerFactory”的bean可用,原因为:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有名为“Entity ManagerFactory”的bean可用

共有2个答案

夏昊
2023-03-14

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

万俟宜修
2023-03-14

如果您现在有相同的结构,我推荐@springboottest

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

 类似资料:
  • 我试图理解maven是如何从存储库中下载二进制文件的。 例如,我的项目有以下依赖关系: 现在,这些二进制文件出现在http://mvnrepository.com/. 在pom.xml中,我们有

  • 我已经在pom中配置了本地maven存储库。xml。当我构建项目时,它会显示依赖项下载错误(请参阅下面的日志)。Maven正在尝试从我的本地Maven存储库下载所有依赖项。 日志 这是我的pom。xml文件 本地存储库是http://XXX。XXX。XX。XXX:8081/artifactory/libs本地发布 xml。背景

  • 我有一个奇怪的问题,< code > mvn clean install-d project . version = 1 或< code>jenkins build运行正常,但当我在IDE中打开模块时,intellij变得非常愤怒,这影响了开发。 我在intellij日志中看到以下问题 POM 代码受版权保护,所以不能透露,但这是一个基本大纲 < li>fabric-common:基本模块(用于绑

  • 我想将审核更改持久化到oracle db。micro服务是一个带有hibernate的Spring Boot应用程序。我在javers的mvn存储库链接中发现了许多依赖项 我应该为oracle db使用哪个依赖项?

  • 我是一名新的Android学习者,我正在为语言翻译制作我的第一个Android应用程序。在添加了一些依赖项之后,我遇到了一些问题。我该怎么解决这个问题? Gradle同步失败:无法解决配置的所有依赖项: app: dedegRuntimeClasspath。无法确定android.arch.lifecycle的工件: livedata: 1.1.1:脱机模式下没有缓存版本有关详细信息,请参阅IDE

  • 我在Eclipse4.18中遇到了一个奇怪的问题,我希望有人能帮我解决这个问题。我的项目是一个jetty webapp,它通过FTP与外部服务器进行通信。我正在使用mockftpserver(https://mockftpserver.org/)帮助对需要与FTP服务器通信的代码进行单元测试。 我在pom中将库依赖项定义为 然后我在测试类中定义了一个导入,比如 没有什么太奇怪的事情发生,maven