JUnit理论适用于所有测试 - 仅需要参数化设置方法

时间:2012-03-07 20:45:55

标签: unit-testing testing parameters junit theory

我在一个类中进行了一些测试,这些测试都依赖于setup方法中设置的变量。因此,如果我可以使用不同的全局变量多次运行所有测试,那将是一件好事。

我知道您可以使用Theory进行单次测试,但我想将其用于所有测试。我的第一种方法导致错误,即设置方法不能有任何参数。

我有解决方法吗?我不想在类中注释每个单独的测试,并添加一些配置逻辑,如果这可以在中央设置方法中处理。

1 个答案:

答案 0 :(得分:2)

你看过Parameterized吗?

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

    private int fInput;
    private int fExpected;

    public FibonacciTest(int input, int expected) {
        fInput= input;
        fExpected= expected;
    }

    @Test
    public void test() {
        assertEquals(fExpected, Fibonacci.compute(fInput));
    }
}
  

FibonacciTest的每个实例都将使用双参数构造函数和@Parameters方法中的数据值构造。