互斥注释

noo*_*oob 19 java junit

是否可以将两个注释标记为互相排斥?

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

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

而且,是的,我想支持@Custom@Test我的框架(尽管不是同样的测试方法).

Bof*_*ain 1

实际上没有任何方法可以限制可以在 Java 元素上添加的注释。因此,例如,您可以将一个字段标记为@Required@Optional,尽管这完全是无意义的。

您必须在运行时进行检查,方法是查看存在哪些注释,或者查找您感兴趣的特定注释,然后抛出异常(将由单元测试捕获)。

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