在繼續進行下一個測試用例之前,有沒有什麼方法可以告訴JUnit多次使用不同的數據運行特定的測試用例?使用不同的數據多次運行相同的JUnit測試用例
64
A
回答
63
import org.junit.Test;
import org.junit.experimental.theories.*;
import org.junit.runner.RunWith;
@RunWith(Theories.class)
public class PrimeTest {
@Theory
public void isPrime(int candidate) {
// called with candidate=1, candidate=2, etc etc
}
public static @DataPoints int[] candidates = {1, 2, 3, 4, 5};
}
2
我總是做一個幫助器方法,根據參數執行測試,然後從JUnit測試方法調用該方法。通常這意味着單個JUnit測試方法實際上會執行大量測試,但這對我來說不是問題。如果你想要多個測試方法,每個獨立調用一個,我建議生成測試類。
21
這聽起來像是參數化測試的完美人選。
但是,基本上,參數化測試允許您在不同的數據上運行同一組測試。
下面是關於它的一些好的博客文章:
3
9
最近我開始zohhak項目。它可以讓你寫:
@TestWith({
"25 USD, 7",
"38 GBP, 2",
"null, 0"
})
public void testMethod(Money money, int anotherParameter) {
...
}
1
如果你不想或者不能使用定製的運行(例如,你已經在使用的其他選手一樣,Robolectric亞軍),你可以試試這個DataSet Rule。
3
一個更好的方法(可以讓你有一個以上的測試方法)是使用JUnit與JUnitParams:
import junitparams.Parameters;
import org.junit.Test;
@RunWith(JUnitParamsRunner.class)
Public class TestClass() {
@Test
@Parameters(method = "generateTestData")
public void test1(int value, String text, MyObject myObject) {
... Test Code ...
}
.... Other @Test methods ....
Object[] generateTestData() {
MyObject objectA1 = new MyObject();
MyObject objectA2 = new MyObject();
MyObject objectA3 = new MyObject();
return $(
$(400, "First test text.", objectA1),
$(402, "Second test text.", objectA2),
$(403, "Third test text.", objectA3)
);
}
}
你可以得到junitparams項目here。
1
如果您已經在測試課堂中使用了@RunWith
,那麼您可能需要查看this。
相關問題
- 1. 用不同的設置多次運行相同的測試
- 2. 同時運行JUnit測試用例
- 3. Pytest:使用不同的輸入數據多次運行測試
- 4. 使用不同的參數多次執行jUnit runner運行測試類
- 5. 使用不同的數據運行JUnit測試
- 6. 多次運行JUnit測試給出了不同的結果
- 7. 運行測試用例多次與不同@BeforeClass設置JUnit 4中
- 8. 多次使用不同變量自動運行相同的測試計劃
- 9. 的build.xml不運行JUnit測試用例
- 10. 使用不同的測試用例運行SpecFlow測試
- 11. JUnit:運行同時測試
- 12. JS單元測試使用不同參數運行多次
- 13. 如何使用不同的數據運行相同的sql很多次
- 14. Visual Studio C#單元測試 - 使用不同的/多個測試初始化運行單元測試,多次運行相同的單元測試?
- 15. Testng Webdriver:我怎樣才能多次運行相同的測試用例?
- 16. 使用JUnit測試的不同單例實例
- 17. JUnit測試用例在eclipse中運行多次
- 18. 在Eclipse中,如何多次運行JUnit測試用例
- 19. 無論如何,我可以每次運行相同的測試用例但使用不同的值嗎?
- 20. 如何使用相同的rpsec測試用例來測試不同的網站
- 21. AIR運行相同的應用程序兩次進行測試
- 22. 在同一瀏覽器的多個實例中使用硒webdriver運行相同的junit測試用例(負載測試)
- 23. 在不同的項目中使用多個Spring上下文運行JUnit測試
- 24. 沒有可運行的方法,同時運行測試用例運行JUnit的插件測試
- 25. phpspec - 使用多個值運行相同的測試
- 26. 如何多次使用不同的參數運行相同的廚師配方
- 27. 在量角器中多次運行相同的測試
- 28. 可以使用Maven Surefire插件多次運行相同的測試嗎?
- 29. 執行多個測試依次用不同的參數TestNG的
- 30. 行家:運行相同的測試進行不同的配置
通過使用理論(正如@dfa指出的那樣),Junit會將所有測試視爲一項測試,並且會使得更難確定哪項測試失敗。 雖然參數化測試(如@ jjnguy指出的)將它們全部視爲不同的測試,清楚地表明哪個測試失敗。 – mindreader 2014-05-02 18:12:32