VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • @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这样的产品会有很多种。

原文:

https://www.cnblogs.com/push-blackpearl/p/14518225.html

 


相关教程