在继续进行下一个测试用例之前,有没有什么方法可以告诉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. 同时运行JUnit测试用例
- 2. 使用不同的参数多次执行jUnit runner运行测试类
- 3. 多次运行JUnit测试给出了不同的结果
- 4. 使用不同的测试用例运行SpecFlow测试
- 5. JUnit:运行同时测试
- 6. Testng Webdriver:我怎样才能多次运行相同的测试用例?
- 7. 使用JUnit测试的不同单例实例
- 8. VS2010单元测试 - 用不同的参数重新运行相同的测试
- 9. 在Eclipse中,如何多次运行JUnit测试用例
- 10. JUnit测试用例在eclipse中运行多次
- 11. AIR运行相同的应用程序两次进行测试
- 12. 在不同的项目中使用多个Spring上下文运行JUnit测试
- 13. 如何多次使用不同的参数运行相同的厨师配方
- 14. 在量角器中多次运行相同的测试
- 15. 执行多个测试依次用不同的参数TestNG的
- 16. 行家:运行相同的测试进行不同的配置
- 17. 运行多个测试相同的不同测试方法构建项目
- 18. 运行Junit测试用例时OutofMemoryError
- 19. 如何在JSP中通过Servlet同时运行多个JUNIT测试用例
- 20. 数据库多次使用不同列选择相同记录
- 21. junit测试用例运行后,我应该删除与此测试用例有关的测试数据吗?
- 22. 如何在testlink配置副本中多次执行相同的测试用例
- 23. 如何使用chakram js多次测试相同的路由?
- 24. 多次使用相同的jQuery函数
- 25. 多次使用相同的参数
- 26. 为groovy和spock中的不同类运行相同的测试
- 27. 如何在junit或testng中使用csv文件中的不同测试数据集运行多个测试用例
- 28. 运行JUnit测试在使用Selenium的不同浏览器上“自动”
- 29. 大同考试运行测试两次
- 30. 是否当运行测试用例时,jUnit测试用例实际上在数据库中插入数据
通过使用理论(正如@dfa指出的那样),Junit会将所有测试视为一项测试,并且会使得更难确定哪项测试失败。 虽然参数化测试(如@ jjnguy指出的)将它们全部视为不同的测试,清楚地表明哪个测试失败。 – mindreader 2014-05-02 18:12:32