2014-03-03 78 views
0

我對JUnit 4相對較新;我發現我可以用一個方法重複相同的測試,使用不同的輸入,使用@Parameters註釋來標記返回數組可重用的方法,比如List<Integer[]>通過@Parameters測試Junit多個輸入/多個方法

我發現JUnit確實要求數組的Iterable的方法提供者是靜態的,並且被命名爲data,這意味着您可以測試不同的方法,但始終使用相同的數據。

事實上,您可以使用@Parameters來標記任何方法(使用任何返回類型,BTW),但不起作用;考慮到只有data()方法。

我希望允許做在和@Parameters註釋的一些不同的數據集和一些機構的JUnit(比如一個參數@Test)可能指定要使用的數據集X在執行testFoo()和數據testBar()設置Y

換句話說,我想在每個測試方法中設置一個本地(而不是類/實例)數據集。

正如我所理解的那樣,你必須爲每個你想用多個輸入測試的方法建立一個單獨的類,這使得這個東西變得毫無用處; AAMOF我自己構建了一個適度的框架(實際上基於JUnit),它確實允許我使用多個輸入(具有跟蹤功能)測試多種方法,所有方法都包含在一個類中,避免代碼擴散。

我錯過了什麼?!?

回答

0

只要它具有@Parameters註釋,它應該無關緊要。

擁有多個數據集的最簡單方法是將測試放在抽象類中,並讓具體的子類具有使用@Parameters方法的方法。

但是,我會質疑爲什麼要在同一個測試類中每個測試有多個數據集。這可能違反了單一責任原則,您應該將數據集分爲1個測試類。