Spawn JUnit 4以编程方式进行测试

tim*_*nen 3 junit junit4

我有一个JUnit 4测试,它创建测试数据并断言每个数据的测试条件.如果一切正确,我会得到一个绿色测试.

如果一个数据未通过测试,则中断整个测试的执行.我想对每个数据进行一次JUnit测试.是否有可能以编程方式生成JUnit测试,以便在IDE中进行大量测试?

这种方法的原因是为了更快地概述哪个测试失败并且如果一个数据失败则继续剩余的测试.

Joa*_*uer 5

听起来你想要编写一个参数化测试(对不同的数据集进行完全相同的检查).

有这个Parameterized课程.此示例显示了如何使用它:

@RunWith(Parameterized.class)
public class FibonacciTest {
    @Parameters
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[][] {{ 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 } });
    }

    private final int input;
    private final int expected;

    public FibonacciTest(final int input, final int expected) {
        this.input = input;
        this. expected = expected;
    }

    @Test
    public void test() {
        assertEquals(expected, Fibonacci.compute(input));
    }
}                    
Run Code Online (Sandbox Code Playgroud)

请注意,该data()方法返回方法使用的数据test().该方法可以从任何地方获取数据(比如存储在测试源中的数据文件).

此外,没有什么可以阻止你@Test在这个课程中拥有多个方法.这提供了一种在同一组参数上执行不同测试的简便方法.