我目前正在使用 aspectj 开发一些监控工具。因为这个工具应该是技术独立的(尽可能),所以我没有使用 Spring 进行注入。但我希望我的方面进行单元测试。
方面示例:
@Aspect
public class ClassLoadAspect {
private Repository repository;
public ClassLoadAspect() {
repository = OwlApiRepository.getInstance();
}
@After("anyStaticInitialization()")
public void processStaticInitilization(JoinPoint jp) {
Class type = jp.getSourceLocation().getWithinType();
if (type.isInterface()) {
repository.storeInterfaceInitialization(type);
} else if (type.isEnum()) {
repository.storeEnumInitialization(type);
} else {
repository.storeClassInitialization(type);
}
}
@Pointcut("staticinitialization(*) && !within(cz.cvut.kbss.odra..*)")
public void anyStaticInitialization() {
}
public Repository getRepository() {
return repository;
}
public void setRepository(Repository repository) {
this.repository = repository;
}
}
但是,我真的不知道如何构建单元测试(应该模拟存储库字段(使用 mockito)),但是我没有控制方面的创建,因此我无法手动设置依赖项。我应该调用什么来获取实例?或者还有其他一些场景如何对aspectj方面进行单元测试。
谢谢。