我想监视一个具有自定义注释的类,但是当我尝试获取注释时它什么也没有。
我的类定义为:
@FisaEntity(name="TCRB_AFL_AFFILIATION", applicationId="CRB_AFL_REQ", master=true)
@PrimaryKeyFields(names={"CRB-TCRB_AFL_AFFILIATION-AFFILIATION_ID", "CRB-TCRB_AFL_AFFILIATION-AFFIL_SEQ" })
public class Affiliation{
}
当我尝试使用此代码获取注释时:
FisaEntity entityAnnotation = (FisaEntity)klass.getAnnotation(FisaEntity.class);
我的测试运行如下:
Affiliation affiliation = spy(new Affiliation());
调试我的代码,我可以看到我的变量 klass 是:
com.req.model.Affiliation$$EnhancerByMockitoWithCGLIB$$123@123
有人知道任何黑客吗?
最佳答案
您自己回答了您的问题:
com.req.model.Affiliation$$EnhancerByMockitoWithCGLIB$$123@123
不要对模拟或 spy 做出任何假设。将它们用于它们的用途:为您提供功能(也称为行为)的“测试 stub ”。
换句话说:您创建模拟,以便可以控制/验证对这些对象进行的方法调用。您以某种方式将模拟注入(inject)到被测试的代码中,以获得您想要引起/观察到的效果。
除此之外,比如“希望”Mockito 创建的类具有与原始类相同的注释和其他内容:这根本不是一个好方法。如上所述:您正在模拟对象来控制它们的行为,而不是 Mockito 必须生成的相应类的结构组合,以便实例化模拟对象。
关于java - 如何使用 Mockito 监视具有注释的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53733942/