我的设置如下:
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);
}
测试类:哪个@Autowires
bean。
当Mockito在TestConfig中创建模拟时,它似乎调用了@PostConstruct,而这个@PostConstruct似乎在map字段初始化之前被调用,因此它会抛出异常。
我的问题是:
编辑:显然,调用是在Spring实例化之后完成的,就在Spring从Config的@Bean方法中重启bean之前
答案 0 :(得分:2)
Mockito没有打电话给@Autowired
- 春天是。你说在你的测试中你使用@Mock
,这不是Mockito注释。
如果您打算使用@PostConstruct
,您会发现Mockito不会调用您的@Mock Bean myBean;
@Before
public void before() {
MockitoAnnotations.initMocks();
}
方法。
换句话说,像这样编写测试类:
{{1}}