【问题标题】:junit | autowired components in main is null君特 | main 中的自动装配组件为空
【发布时间】:2019-02-28 15:19:36
【问题描述】:

我在 src/main/java 中定义了一个类:

Class A{
    @Autowired 
    B b; 
    public void method1() {}
} 

对应的测试类为:

Class ATest {
    A a; 
    @Test
    public void method1Test() {}
}

当 ATest 进行单元测试时,B 为空。 (作为junit测试运行)。

我只有 spring-context 库,没有 spring boot 应用程序。此外,我已经定义了@ComponentScan(basePackage="com"),并且 A 类在同一个包中。

请告诉我如何在这种情况下进行单元测试。

【问题讨论】:

  • 我的回答有帮助吗?您需要更多信息吗?

标签: spring junit autowired spring-config


【解决方案1】:

对于 Spring 依赖项,我添加到测试类 @Spy@Autowired

@Spy
@Autowired
private B b;

B将在测试A时可用

【讨论】:

    【解决方案2】:

    为什么要在资源目录中定义不是单元测试的类?

    【讨论】:

    • 对不起,这是 src/main/java 不是资源
    【解决方案3】:

    Mockito 提供了在真实对象上创建间谍的选项。当spy被调用时,会调用真实对象的实际方法。

    @RunWith(MockitoJUnitRunner.class)
    Class ATest {
    
        @Syp
        B b;
    
        @Test
        public void method1Test() {}
    }
    

    【讨论】:

      猜你喜欢
      • 2016-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      • 2014-09-08
      相关资源
      最近更新 更多