使用不同的参数多次运行相同的Junit测试

时间:2017-10-02 09:12:48

标签: java junit parameters

我必须做以下事情:

我有一个Junit测试,它基本上是基于数值计算。我必须用五种不同的输入来运行这个测试。我在这里的输入不是那么复杂的JSON文件。此外,测试将从常见的Config文件(也是JSON文件)读取配置数据,即从该配置文件中设置的输入对于所有五个测试都是相同的。

一般配置文件中的一个参数是whichTestsTobeRun:[1,4,5],例如:所以基本上可以配置哪些测试将运行。它还有一些其他输入参数,比如是否生成日志文件(真/假)等等。

所以我想做的是,首先从配置JSON数据中读取参数,通过这些参数我将知道要运行哪些测试,以及输入参数方面的其他有用信息。之后,我将读取Test特定的JSON文件,然后根据这些输入参数(配置参数+测试特定参数)运行测试。

有人可以指导我如何实现这一目标?是否可以使用参数化的Junit类?如果是,那么我可以在那里读取/设置参数吗?我的意思是通过它做所有这些是一个很好的因素吗?如果没有,我可以使用哪个其他框架?

Pl注意我已经阅读了类似的帖子,但是找不到像我这样的场景,例如选择从配置文件中运行哪些测试。例如。

1 个答案:

答案 0 :(得分:1)

正如你已经在JUnit中指出parameterized tests我会去找他们。像下面这样的东西应该做你想要的(从提供的链接中获取和改编)。

@RunWith(Parameterized.class)
public class FooTest {
    @Parameters
    public static Collection<TestData> data() {
        Collection<TestData> dataCollection = loadFromSource();
        return dataCollection ;
    }

    private TestData data; // contains input and expected output

    public FooTest(TestData data) {
        this.data = data;
    }

    @Test
    public void someTest() {
        assertEquals(data.someExpectedValue, foo.execute(data.jsonConfig));
    }
}

免责声明:未编译或测试。