在模拟类中保留批注,以便使用反射进行查找


class SomeClass{
    @SomeAnnotation
    public void someMethod(){
    }
}

这是我使用 Mockito 模拟(准确地说是 syping)并将其传递给我的代码的一部分,该代码扫描该类的实例以查找某些注释,例如 @SomeAnnotation .

但是当我尝试使用作为依赖项传递给被测试类的监视实例查找注释时,我无法在someMethod上找到注释。

我知道 Mockito 替换代理后面的真实实例的原因,所以我找不到它。但是有解决方案吗?

不幸的是不可能。Mockito的人正在使用CGLIB作为字节码引擎,他们使用它的方式不允许在方法(或任何与此相关的方法)上进行注释注入,所以不幸的是,你想做的事情是Mockito无法实现的。我认为他们的跟踪器中有几个关于相关事物的错误/增强功能。

为了克服这个问题 - 而不是使用Mockito的间谍,也许你可以创建自己的间谍?就像创建一个类来扩展您现在正在监视的类,并以某种方式覆盖会导致测试出现问题的内容?很难在没有看到课程本身的情况下给我更具体的建议。

最新更新