• @MockBean 注解后 bean成员对象为 null?


    笔者在写自测的时候遇到的问题:

    我想模拟一个Bean,并在之后使用Mockito打桩,于是使用了 @MockBean 注解(spring集成mockito的产物),但代码编写好了后启动测试却报NullPointerException
    好家伙,bean没有Mock上。

    交代一下我的代码背景:

    框架:SpringBoot、SpringBoot Test、TestNG、Mockito

    @SpringBootTest
    @TestPropertySource("classpath:application.properties")
    public class XXXServiceTest extends AbstractTestNGSpringContextTests {
      
      @MockBean
      XXXComponent xxxComponent;  // null ???
    }
    

    解决办法

    // 在测试类上加
    @SpringBootTest
    @TestPropertySource("classpath:application.properties")
    @TestExecutionListeners(MockitoTestExecutionListener.class)
    public class XXXServiceTest extends AbstractTestNGSpringContextTests {
      
      @MockBean
      XXXComponent xxxComponent;  // 有了有了
    }
    

    原因

    因为Spring集成TestNG的抽象类: AbstractTestNGSpringContextTests 上并没加关于Mockito相关的测试监听器,所以就没有运用上MockBean的注解功能,看源码

    @TestExecutionListeners({ServletTestExecutionListener.class, DirtiesContextBeforeModesTestExecutionListener.class, DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class})
    public abstract class AbstractTestNGSpringContextTests implements IHookable, ApplicationContextAware {
    

    PS:官方也有讨论过这个issue,但官方并不打算集成进来,所以叫大家自己加个Listener则是,我认为也是该这样,因为Mockito这样的产品会有很多种。

  • 相关阅读:
    8.17 纯css画一个着重号图标
    8.16 val()和html()的问题
    8.14 git??sourceTree??
    7.27-8.10 Problems
    To be a better me
    【LeetCode刷题】Set and bitset
    【LeetCode刷题】求平方根
    【LeetCode刷题】爬楼梯问题
    大学四年就这样,么了~
    硬件综合实习——51单片机四则运算带括号计算器
  • 原文地址:https://www.cnblogs.com/push-blackpearl/p/14518225.html
Copyright © 2020-2023  润新知