Mockito+Spring+@PostConstruct,mock初始化错误,为什么调用@PostConstruct



我有一个类似于的设置

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);
}

Test类:哪个@Autowires是bean。

当Mockito在TestConfig中创建mock时,它似乎调用了@PostConstruct,而这似乎是在映射字段初始化之前调用的,因此它抛出了一个异常。

我的问题是:

  • Mockito为什么调用@PostConstruct
  • 如何禁用@PostConstruct进行嘲讽

EDIT:显然,调用是在实例化之后完成的,就在Spring从Config的@bean方法中检索bean之前

Mockito没有调用@PostConstruct——Spring是。您说在测试中使用了@Autowired,这不是Mockito注释。

如果您打算使用@Mock,您会发现Mockito不会调用您的@PostConstruct方法。

换句话说,把你的测试类写成这样:

@Mock Bean myBean;
@Before
public void before() {
MockitoAnnotations.initMocks();
}

最新更新