我有一个像这样的设置:
Bean 类:
private final Map<String, String> configCache = new HashMap<>(); @PostConstruct private void fillCache() { (...) configCache.clear();}
TestConfig 类:
@Bean @Order(Ordered.HIGHEST_PRECEDENCE) @Primary public Bean beanMock() { return Mockito.mock(Bean.class); }
测试 类:哪个@Autowiresbean。
@Autowires
看起来当Mockito在TestConfig中创建模拟时,它会调用@PostConstruct,而后者似乎在初始化map字段之前被调用,因此会引发异常。
我的问题是:
编辑:显然,调用是在实例化之后完成的,就在Spring从Config的@Bean方法撤消bean之前
Mockito没有打电话-Spring @PostConstruct是。您说在测试中使用@Autowired,它不是Mockito批注。
@PostConstruct
@Autowired
如果您打算使用@Mock,则会发现Mockito不会调用您的@PostConstruct方法。
@Mock
换句话说,像这样编写测试类:
@Mock Bean myBean; @Before public void before() { MockitoAnnotations.initMocks(); }