2016-04-28 120 views
0

我有一些jUnit4測試類,我希望使用註釋中傳遞的不同參數運行多次。例如,像這樣:使用不同的參數多次執行jUnit runner運行測試類

@RunWith(MyClassRunner.class) 
@Params("paramFor1stRun", "paramFor2ndRun") 
class MyTest { 
    @Test 
    public void doTest() {..} 
} 

我認爲亞軍可以幫助我,但我不知道如何實現這一點。你可以建議嗎?

+0

除了給出的答案,你可能也想看看這個:https://github.com/EaseTech/easytest-core – SiKing

回答

2
  1. 您需要添加註釋@RunWith(Parameterized.class)到您的測試。
  2. 然後,創建一個構造爲您類的參數則需要:

    public Test(String pParam1, String param2) { 
        this.param1 = pParam1; 
        this.param2 = pParam2; 
    } 
    
  3. 然後,聲明這樣的方法(它提供的對應於該構造函數的參數的陣列):

    @Parameters 
    public static Collection<Object[]> data() { 
        Object[][] data = {{"p11","p12"},{"p21","p22"}} 
        return Arrays.asList(data); 
    } 
    
  4. 你可以做你測試,它會爲你的陣列的每行來執行:

    @Test 
    public void myTest() { 
        assertEquals(this.param1,this.param2); 
    } 
    

如果您使用註釋@Parameter(value = N)其中N是您參數數組的索引,那麼您沒有定義構造函數就有了更快的方法。

+0

有沒有辦法在不同的名字下運行這些測試?我的意思是,在Jenkins中,我需要觀察這些類的運行:MyTest.doTest [paramsFor1stRun],MyTest.doTest [paramsFor2ndRun] – awfun

+0

此線程是否回答您的問題? http://stackoverflow.com/questions/650894/changing-names-of-parameterized-tests。從JUnit 4.11開始,它似乎已經存在。 – Akah

+0

謝謝你,我決定創建自己的測試跑步者,但參數化跑步者幫助我理解了很多。也許我會在將來使用它來管理我的測試 – awfun