互斥批注

2022-09-02 11:01:13

是否可以将两个批注标记为彼此互斥?

我有一个自定义的JUnit运行器,我想确保如果测试用我的注释标记,标记它将引发(最好)编译错误或(不太优选)运行时错误。@Custom@Test

我想要这个的原因是,基本上,但在运行测试之前需要进行一些额外的预处理。而且,我编码它的方式,对于每个自定义标记(是的,有多个),测试将运行多次,每次都有相应的预处理。因此,让它也运行是没有意义的,因为该测试意味着有一些预处理。@Custom@Test@Test

而且,是的,我想同时支持这两者,并在我的框架中支持(尽管,不是针对相同的测试方法)。@Custom@Test


答案 1

实际上,没有任何方法可以限制您可以在Java元素上放置的注释。因此,例如,您可以将一个字段标记为 和 ,即使这完全是荒谬的。@Required@Optional

您必须在运行时通过查看存在的注释或查找您感兴趣的特定注释,然后引发异常(单元测试将捕获)来执行检查。

对于您的特定问题,可能有更好的解决方案。如果要特别对待某些测试用例,则可能需要实现自己的测试运行程序,并使用@RunWith注释来调用它。然后,可以确保方法获取先决条件操作。@Custom


答案 2

您可以利用 Java 注释处理来为您执行此操作(通过调用编译后操作,而编译后操作又会使编译任务失败),但它不必要地复杂。(如果你真的想,告诉我,我为你挖掘出那个代码)。更容易的是,有一个手动调用的小类来收集信息。

所以更精确:你是需要它为你(你自己,只有你自己)作为方便,还是需要它作为自动化解决方案的大型项目(并愿意投入一些努力?


推荐