2011-10-27 174 views
9

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

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

回答

4

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

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

4

为了使JUnit4能够取回自定义注释,您需要编写自己的自定义Runner实现,然后将其提供给Test类上的RunWith注解。

您可以先看一下BlockJUnit4ClassRunner,它是JUnit 4的默认实现运行程序(如果内存为我服务)。

假设你想拿起一个名为@MyTest一个可定制的运行MyRunner自定义注解,你的测试类看起来是这样的:

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

通过“里德的Mac”的回答也相当好在描述如何实现自定义注释。

+6

没有“Reid Mac”的答案了。 – BrunoJCM

1

可以创建自定义TestRule作为第一答复中提到,或者你可以使用/扩展TestWatcher已经有测试的处理开始/结束方法。 有一种方法apply(Statement base, Description description)其中描述实际上是测试方法的一个包装。 Description有一个很好的方法getAnnotation(annotationClass)它可以让你做你想做的事情,通过指定一个你想要处理的自定义注释