2011-03-09 105 views
3

我有一个JUnit 4测试,它创建测试数据并为每个单一数据声明测试条件。如果一切正确,我会得到一个绿色测试。Spawn JUnit 4以编程方式测试

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

此方法的原因是为了更快地了解哪个测试失败并且如果其中一个数据失败,则继续进行其余测试。

回答

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)); 
    } 
}      

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

此外,没有什么能够阻止您在此课程中使用多个@Test方法。这为在同一组参数上执行不同的测试提供了一种简单的方法。

+0

嗨Joachim,非常感谢你的这个非常快速的回应。听起来像是我的问题的解决方案。 – timomeinen 2011-03-09 08:56:38

+0

@Timo:如果它有帮助,那么通常应该通过投票我的答案(甚至接受它)来暗示这一点。 – 2011-03-09 09:08:40

+0

当然!我只是想检查我的问题的解决方案。所以:它很好用!谢谢! – timomeinen 2011-03-09 10:07:43

相关问题