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

运行单元测试时表示错误的不满足依赖关系

弓宏茂
2023-03-14

我正在开发一个Spring Boot应用程序,其中我声明了一个组件,如下所示:

   public class Comp1{

   }

我想让它成为一个单例bean(因为默认情况下组件是单例的,所以我没有添加显式声明)。

我在类中添加了一个私有构造函数。

  @Component
   public class Comp1{
      private Comp1(){
      }
   }

我有一个定义bean的配置类。

   @Configuration
   public class Congfig1{
     @Bean
     public Bean1 getBean1(){
     }
   }

我还有应用程序和控制器类。

   @SpringBootApplication
   public class App1{
   }

   @RestController
   public class Controller1{
      @Autowired
      private Comp1 comp1;
   }

我的单元测试用例如下所示:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK,classes = {Config1.class})
public class UnitTest {
   @Autowired
   private Comp1 com1;

在上面的代码中,如果我运行单元测试,我将得到以下异常。

通过字段“repositoryMaster”表示的未满足的依赖关系;嵌套的异常是org。springframework。豆。工厂NoSuchBean定义异常

然而,当我将其作为Spring boot应用程序运行时,该应用程序运行良好。

当我公开Comp1的构造函数并在Config1中添加Comp1的bean定义时,异常没有发生。

  @Component
   public class Comp1{
      public Comp1(){
      }
   }

   @Configuration
   public class Congfig1{
     @Bean
     public Bean1 getBean1(){
     }
     @Bean
     public Comp1 getComp1(){
     }
   }

谁能解释一下这种不一致的原因吗。我假设如果启用了组件扫描,那么bean应该在应用程序中自动连接。

共有1个答案

简嘉赐
2023-03-14

1) 作为私有构造函数,spring无法创建组件类Comp1的实例。一旦@component成为附加类,spring将尝试创建默认的单例实例。在需要对象的地方,通过DI注入对象
甚至不需要使用@Bean public Comp1 getComp1(){}

 类似资料:
  • org.springframework.beans.factory.unsatisfiedDependencyException:创建名为“com.sonos.arcor.service.AddressServiceTest”的bean时出错:通过字段“service”表示的未满足的依赖项;嵌套异常为org.springframework.beans.factory.noSuchBeanDefin

  • 无法解决测试Spring Boot应用程序的问题: 主控制器: 应用程序属性:

  • 大家好,每个人都是spring的新手,正在尝试为CRUD创建一个简单的应用程序,但是我得到了下面的错误。我正在使用STS 创建名为“Client ServiceImpli”的bean时出错:通过字段“Client Repository”表示的不满足的依赖关系;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建名为“clie

  • 我正在尝试弄清楚如何将我的本机库集成到android代码中。我创建了一个简单的C函数,它在设备上运行代码时运行良好。但是我目前的目标是让它在单元测试环境(jUnit)中工作,我面临着问题: 因此,在单元测试env不工作,我将其保存到系统中。load(“/full/path/to/lib.so”),但现在此行引发异常: java.lang.不满意的链接错误:app\build\中介\cmake\de

  • java.lang.noClassDefoundError:scala/collection/gentraversableonce$class at kafka.utils.pool.(pool.scala:28)~[kafka2.10-0.8.1.1.jar:na] at kafka.consumer.FetchRequestandResponseStatsRegistry$.~[kafka2.

  • 以下是例外情况: 我的代码: 我评论了setCacheable(true),因为它给出了一个错误。有人能帮忙吗?