2011-03-09 151 views
3

我有一個JUnit 4測試,它創建測試數據併爲每個單一數據聲明測試條件。如果一切正確,我會得到一個綠色測試。Spawn JUnit 4以編程方式測試

如果一個數據未通過測試,則整個測試的執行會中斷。我想爲每個數據進行一次單一的JUnit測試。是否有可能以編程方式產生JUnit測試,以便在IDE中獲得大量測試?

此方法的原因是爲了更快地瞭解哪個測試失敗並且如果其中一個數據失敗,則繼續進行其餘測試。

回答

5

聽起來你想寫一個參數化測試(對不同的數據集進行完全相同的檢查)。

這裏有Parameterized類。該示例示出如何可以使用:

@RunWith(Parameterized.class) 
public class FibonacciTest { 
    @Parameters 
    public static Collection<Object[]> data() { 
     return Arrays.asList(new Object[][] {{ 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 } }); 
    } 

    private final int input; 
    private final int expected; 

    public FibonacciTest(final int input, final int expected) { 
     this.input = input; 
     this. expected = expected; 
    } 

    @Test 
    public void test() { 
     assertEquals(expected, Fibonacci.compute(input)); 
    } 
}      

注意,data()方法返回數據由test()方法中。該方法可以從任何地方獲取數據(例如,存儲在測試源中的數據文件)。

此外,沒有什麼能夠阻止您在此課程中使用多個@Test方法。這爲在同一組參數上執行不同的測試提供了一種簡單的方法。

+0

嗨Joachim,非常感謝你的這個非常快速的迴應。聽起來像是我的問題的解決方案。 – timomeinen 2011-03-09 08:56:38

+0

@Timo:如果它有幫助,那麼通常應該通過投票我的答案(甚至接受它)來暗示這一點。 – 2011-03-09 09:08:40

+0

當然!我只是想檢查我的問題的解決方案。所以:它很好用!謝謝! – timomeinen 2011-03-09 10:07:43

相關問題