使用 Mockito @Spy注释时不调用@PostConstruct



我正在使用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() {
            ...

相关内容

  • 没有找到相关文章

最新更新