有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java互斥注释

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

我有一个定制的JUnit运行程序,我想确保如果一个测试用我的注释标记@Custom,用@Test标记它将抛出(最好)编译错误或(不太好)运行时错误

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

而且,是的,我希望在我的框架中同时支持@Custom@Test(尽管不是针对相同的测试方法)


共 (3) 个答案

  1. # 1 楼答案

    由于代码在您的框架中运行,您可以添加AOP代码来检查互斥关系,方法是向所有用@Custom注释的类添加切入点,如果还有@Test注释,则抛出RuntimeException

  2. # 2 楼答案

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

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

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

  3. # 3 楼答案

    您可以利用Java注释处理来完成这项工作(通过调用编译后操作,该操作反过来会使编译任务失败),但这是不必要的复杂。(如果你真的想,告诉我,我会帮你找出代码)。更容易的是,您可以手动调用一个小类来收集信息

    所以更确切地说:你是需要它为你(你自己和只有你自己)提供便利,还是需要它作为一个自动化的解决方案(并且愿意为此付出一些努力?)