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

如果使用@mockbean,则无法创建带有ArangoDB-Repository的Spring-Boot应用程序上下文

璩浩广
2023-03-14

我们正在开发一个Spring-Boot应用程序,它使用ArangoDB和ArangoDB团队本身的Spring-Data集成(https://github.com/ArangoDB/Spring-Data)。

我们在尝试开发集成测试时遇到了一些奇怪的问题:当我们在不相关的Spring组件的测试类中使用@mockbean注释时,无法创建应用程序上下文:

org.springframework.beans.factory.UnsatisfiedDependencyException:
   Error  creating bean with name 'repository': Unsatisfied dependency 
   expressed through constructor parameter 1: Ambiguous argument values for 
   parameter of type [com.arangodb.springframework.core.ArangoOperations] - 
   did you specify the correct bean references as arguments?

此外,安装了Spring工具的Eclipse在主类上显示了以下错误:

No constructor with 1 argument defined in class
'com.arangodb.springframework.repository.ArangoRepositoryFactoryBean'

这个错误消息似乎是真的,因为这个工厂只有一个两个参数的构造函数。不管怎么样,没有@mockbean的测试都能成功运行。

示例

Spring Boot test中MockBean注释的解决方法causes NoUniqueBeanDefinitionException(给@MockBean一个名字)也适用于我们,所以这似乎是某个Spring bug。

共有1个答案

车嘉实
2023-03-14

Arango团队修复了此问题,请参阅https://github.com/arangodb/spring-data/issues/14#issuecomment-374141173

 类似资料:
  • 尝试运行Spring Boot应用程序时,我收到以下错误。 ***************************应用程序启动失败 描述: com中的字段存储库。Java新手。积垢。实例服务ProductService需要“com”类型的bean。Java新手。积垢。实例存储库。找不到ProductRepository“”。 注入点具有以下注释: @组织。springframework。豆。工厂注

  • 我正在处理一个Spring Boot应用程序,其中我使用该应用程序公开SOAP WebService。我在Spring boot应用程序中使用Apache CFX framework for SOAP impl。我正在使用基于注释的方法。 我在一个bean中的Spring Boot配置文件中设置应用程序上下文时遇到了问题。下面是我的代码。 配置文件如下所示。 现在我有了bean SOAPproce

  • 我正在尝试使用Poc为我们的项目创建一个侦探应用程序,以便使用Spring mvc(即没有Spring Boot)进行日志记录。我无法在网络上找到我的mvc文档/材料。 那么,如何创建Tracer、spanbean并注入记录器以进行日志记录呢?

  • 我在我的Spring启动应用程序中使用嵌入式hsql db,并且仅当db中不存在时才想创建架构。 假设模式名称为XXX, 我有下面的单语句模式hsql。sql文件: 然而,这与下面的堆栈跟踪有关: 实现这一点的正确语法是什么? 谢谢

  • 我正在试图弄清楚如何构建一个Spring Boot独立应用程序。当然,要让东西自动连线需要一些初始的上下文起点。如果我只是尝试自动生成一个类来运行一个作业,那么即使我将它设置为静态,它也是空的。 有没有办法在一个独立的非Web应用程序中使用Spring@Services? 因此,首先将静态JobRunnerService连接到运行MyApplication的主程序,JobRunner(Servic

  • 我们现有的父项目使用Spring4.3.3.Release,我们试图将它的一部分作为Spring Boot应用程序提供,其他部分作为spring提供。 要做到这一点,我们似乎必须创建一个有两个父项目的Maven项目:我们现有的父项目和Spring Boot父项目。我们怎么能这么做?