我正在使用Spring,TestNG和Mockito框架。我正在为依赖于类 B 的类 A 编写单元测试。B类有一个用@PostConstruct
注释的方法。
在为 A 类使用 TestNG 编写单元测试用例时,我正在使用测试类中的 Mockito @Spy
注释类 B 的实例。我可以看到 Mockito 正确创建了 B 的实例。但是为什么@PostConstruct
Mockito 处理注释时不调用@Spy
代码呢?
所以,我所做的是将@PostConstruct
中的代码移动到构造函数中。
有没有办法让Mockito在处理注释时执行任何"后处理"方法@Spy
?
感谢对此的任何帮助。
不,没有。PostConstruct是一个Spring概念。但是没有什么禁止你在设置方法中调用它:
@Before
public void prepare() {
MockitoAnnotations.initMocks(this);
this.b.postConstruct();
}
我通过将标记为 @PostConstruct 的方法替换为标记为 @Inject 的类的构造函数来解决此问题。这两种解决方案都做同样的事情,并得到Mockito的支持。有必要将依赖性放在:
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
以前:
@Service
public class AddressMapper extends CommonMapper {
@PostConstruct
private void init() {
....
后:
@Service
public class AddressMapper extends CommonMapper {
@Inject
public AddressMapper() {
...