2011-10-27 176 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)它可以讓你做你想做的事情,通過指定一個你想要處理的自定義註釋