我有一些jUnit4測試類,我希望使用註釋中傳遞的不同參數運行多次。例如,像這樣:使用不同的參數多次執行jUnit runner運行測試類
@RunWith(MyClassRunner.class)
@Params("paramFor1stRun", "paramFor2ndRun")
class MyTest {
@Test
public void doTest() {..}
}
我認爲亞軍可以幫助我,但我不知道如何實現這一點。你可以建議嗎?
我有一些jUnit4測試類,我希望使用註釋中傳遞的不同參數運行多次。例如,像這樣:使用不同的參數多次執行jUnit runner運行測試類
@RunWith(MyClassRunner.class)
@Params("paramFor1stRun", "paramFor2ndRun")
class MyTest {
@Test
public void doTest() {..}
}
我認爲亞軍可以幫助我,但我不知道如何實現這一點。你可以建議嗎?
@RunWith(Parameterized.class)
到您的測試。然後,創建一個構造爲您類的參數則需要:
public Test(String pParam1, String param2) {
this.param1 = pParam1;
this.param2 = pParam2;
}
然後,聲明這樣的方法(它提供的對應於該構造函數的參數的陣列):
@Parameters
public static Collection<Object[]> data() {
Object[][] data = {{"p11","p12"},{"p21","p22"}}
return Arrays.asList(data);
}
你可以做你測試,它會爲你的陣列的每行來執行:
@Test
public void myTest() {
assertEquals(this.param1,this.param2);
}
如果您使用註釋@Parameter(value = N)
其中N是您參數數組的索引,那麼您沒有定義構造函數就有了更快的方法。
有沒有辦法在不同的名字下運行這些測試?我的意思是,在Jenkins中,我需要觀察這些類的運行:MyTest.doTest [paramsFor1stRun],MyTest.doTest [paramsFor2ndRun] – awfun
此線程是否回答您的問題? http://stackoverflow.com/questions/650894/changing-names-of-parameterized-tests。從JUnit 4.11開始,它似乎已經存在。 – Akah
謝謝你,我決定創建自己的測試跑步者,但參數化跑步者幫助我理解了很多。也許我會在將來使用它來管理我的測試 – awfun
除了給出的答案,你可能也想看看這個:https://github.com/EaseTech/easytest-core – SiKing