@Override
protected void injectDependencies(TestContext testContext) throws Exception {
super.injectDependencies(testContext);
/**
* 获取测试类 & fields
*/
Object bean = testContext.getTestInstance();
List<Field> fields = getDeclaredFields(bean);
if (CollectionUtils.isEmpty(fields)) {
return;
}
/**
* 如果测试类中, 被测试对象含有mockito的@InjectMocks注解,且 被测试对象被事务拦截器拦截 则 用原始对象代替
*/
for (Field field : fields) {
InjectMocks injectMocks = field.getAnnotation(InjectMocks.class);
if (injectMocks == null) {
continue;
}
field.setAccessible(true);
Object proxy = field.get(bean);
if (AopUtils.isAopProxy(proxy)) {
// 替换对象
Object target = ((Advised) proxy).getTargetSource().getTarget();
field.set(bean, target);
}
}
}
UnitTestDependencyInjectionTestExecutionListener.java 文件源码
java
阅读 34
收藏 0
点赞 0
评论 0
项目:wisp
作者:
评论列表
文章目录