运行相同JUnit测试用例的多个时间使用不同的数据运行相同JUnit测试用例的多个时间使用不同的数据

2019-05-13 10:03发布

有没有什么办法可以告诉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
标签: java junit