我必须阻止在我的项目中使用特定的注释。由于某些特定情况,我必须阻止在项目测试类中使用org.junit.After
注释。如果有人使用这个注释,将违反整个测试逻辑。
如果在编译期间或运行时发生这种情况,对我来说并不重要。我的想法是使用Spring AOP创建方面,它会在调用After
注释方法上抛出异常。不幸的是,测试类不是Spring bean,因此AOP在这里不起作用。
我该怎么做?是否可以使用一些禁止使用特定注释的编译器指令?
答案 0 :(得分:0)
您可以编写AnnotationProcessor
以在complie period中生成错误
这是注释处理器(find code on github):
@AutoService(Processor.class)
@SupportedAnnotation(After.class)
@SupportedSourceVersion(SourceVersion.RELEASE_8)
public class Q49706464 extends XAbstractProcessor {
@Override
public boolean processActual(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) throws AssertException {
roundEnv.getElementsAnnotatedWith(After.class)
.forEach(e -> error().log("@After is banned.", e));
return false;
}
}
对于以下java文件
import org.junit.After;
public class ForQ49706464 {
@After
public void after() {
}
}
您将收到以下编译错误
ForQ49706464.java:7: error: @After is banned.
public void after() {
^
您可以在IDE中集成注释处理器,直接在文本编辑器中查看错误消息。
XAbstractProcessor
来自我的图书馆Annotation Processor Toolkit