有没有什么办法可以告诉JUnit的不断持续到下一个测试案例前,用不同的数据的特定测试用例多次运行?
Answer 1:
看看到JUnit 4.4的理论 :
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};
}
Answer 2:
这听起来就像是参数化的测试一个完美的候选人。
但是,基本上,参数化的测试允许您运行相同的一组不同的数据测试。
下面是关于它的一些好的博客文章:
- 编写参数JUnit测试
- 单元测试使用JUnit 4.0 。
Answer 3:
最近,我开始zohhak项目。 它可以让你写的:
@TestWith({
"25 USD, 7",
"38 GBP, 2",
"null, 0"
})
public void testMethod(Money money, int anotherParameter) {
...
}
Answer 4:
一个更好的方法(可以让你有一个以上的测试方法)是使用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项目在这里 。
Answer 5:
这是我写了一篇文章,显示与代码示例多次运行测试的几种方法:
重复运行JUnit测试
您可以使用@Parametrized亚军,或者使用列入岗位的特殊亚军
Answer 6:
我始终只是使执行基于参数测试一个辅助方法,然后调用从JUnit测试方法,该方法。 通常情况下,这将意味着一个JUnit测试方法实际上将执行大量的测试,但是这不是我的问题。 如果你想多测试方法,每一个不同的调用,我建议你生成测试类。
Answer 7:
如果您已经使用@RunWith
在您的测试类,你可能需要看看这个 。
Answer 8:
如果你不想或者不能使用定制的运行(例如:你已经在使用的其他选手一样,Robolectric亚军),你可以试试这个数据集规则 。
文章来源: Running the same JUnit test case multiple time with different data