私は現在、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アスペクトを単体テストする方法の他のシナリオがいくつかあります。
ありがとう。