JUnit自定义注释

时间:2011-10-27 19:48:51

标签: java junit annotations

我想创建一个自定义的JUnit注释,类似于@Test中的预期标记,但我还要检查注释消息。

任何提示如何做到这一点,或者可能有什么准备好了吗?

3 个答案:

答案 0 :(得分:5)

要使JUnit4拾取您的自定义注释,您需要编写自己的自定义Runner实现,然后将其提供给Test类上的RunWith-annotation。

你可以先看一下BlockJUnit4ClassRunner,它是JUnit 4的默认实现运行器(如果内存对我很好)。

假设您想要使用自定义运行器MyRunner选择名为@MyTest的自定义注释,您的测试类将类似于:

@RunWith(MyRunner.class)
class Tests {
   ...
   @MyTest
   public void assumeBehaviour() {
      ...
   }
}

“Reid Mac”的答案在描述如何实现自定义注释方面做得相当不错。

答案 1 :(得分:5)

JUnit 4.9加强了图书馆对测试的“规则”的使用,我认为这可能与自定义注释一样有用。以TestRule为出发点。您可以基于该接口实现规则,然后使用@ClassRule或(方法级别)@Rule注释将它们放入您的测试中。

一个很好的具体示例是ExpectedException,它允许您指定异常,例如@Test的预期参数(然后是一些)。

答案 2 :(得分:1)

您可以按照第一个答案中的说明创建自定义TestRule,也可以使用/ extend TestWatcher已经有处理测试开始/结束的方法。 有一个方法apply(Statement base, Description description),其中描述实际上是测试方法的包装器。 Description有一个很好的方法getAnnotation(annotationClass),它可以让你通过指定要处理的自定义注释来执行所需的操作