如何监视 class 有 Mockito 注释的人?
How to spy a class who has an Annotation with Mockito?
我想监视一个 class 有自定义注释的人,但是当我尝试获取注释时它什么也没有。
我的class定义为:
@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$3@123
有人知道任何技巧吗?
Class clazz = Affiliation.class;
Annotation[] annotations = clazz.getAnnotations();
Annotation annotation = clazz.getAnnotation(Component.class);
这些都应该为您提供 class 的所有注释和 class 的特定注释。
从你的问题来看,不清楚klass
是什么!
如果您的测试目的仅仅是为了测试注释是否存在,那么您可以通过这种方式获取注释然后断言它们...
您自己回答了您的问题:
com.req.model.Affiliation$$EnhancerByMockitoWithCGLIB$3@123
不要对模拟或间谍做出任何假设。将它们用于它们的用途:"test stubs" 为您提供 功能(又名行为)。
换句话说:您创建模拟,以便您可以 control/verify 对这些对象进行方法调用。您以某种方式将模拟注入被测代码以获得您想要的效果 cause/observe.
除此之外的任何内容,例如 "hoping" Mockito 创建的 class 具有所有相同的注释和原始 class 的其他内容:根本不是一个好方法.
如前所述:您正在模拟对象以控制它们的行为,而不是 Mockito 必须生成的相应 class 的 结构组合 以实例化模拟对象对象。
我想监视一个 class 有自定义注释的人,但是当我尝试获取注释时它什么也没有。
我的class定义为:
@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$3@123
有人知道任何技巧吗?
Class clazz = Affiliation.class;
Annotation[] annotations = clazz.getAnnotations();
Annotation annotation = clazz.getAnnotation(Component.class);
这些都应该为您提供 class 的所有注释和 class 的特定注释。
从你的问题来看,不清楚klass
是什么!
如果您的测试目的仅仅是为了测试注释是否存在,那么您可以通过这种方式获取注释然后断言它们...
您自己回答了您的问题:
com.req.model.Affiliation$$EnhancerByMockitoWithCGLIB$3@123
不要对模拟或间谍做出任何假设。将它们用于它们的用途:"test stubs" 为您提供 功能(又名行为)。
换句话说:您创建模拟,以便您可以 control/verify 对这些对象进行方法调用。您以某种方式将模拟注入被测代码以获得您想要的效果 cause/observe.
除此之外的任何内容,例如 "hoping" Mockito 创建的 class 具有所有相同的注释和原始 class 的其他内容:根本不是一个好方法.
如前所述:您正在模拟对象以控制它们的行为,而不是 Mockito 必须生成的相应 class 的 结构组合 以实例化模拟对象对象。