JUnit - 参数化测试 - 多个构造函数调用

JUnit - parameterized test - multiple constructor calls

我有一个文本文件列表。我无法将它们全部加载在一起,因此我构建了一个参数化测试,其中只有一些文件被一起测试(test1:file1...file5,test2:file6...file10,...)。这些文件在 class 的构造函数中加载。加载的文件范围取决于参数。我在 class 中有不同的测试方法(下面描述问题的代码)。

问题:为 class 的每个测试方法单独调用构造函数。这意味着:对于 10 个要测试的方法,构造函数将针对每个要测试的文件范围调用 10 次。结果:文件通过构造函数调用在每个测试用例中加载 10 次。

对该问题有任何解释或解决方案吗?

@RunWith(Parameterized.class)   
public class PageListTest {

    private int fileFrom, fileTo;

    @Parameters
    public static Collection<Object[]> data() {
        Object[][] data = new Object[][] {{0, 3}, {22, 24}};
        return Arrays.asList(data);
    }

    public PageListTest(int from, int to) throws Exception {
        fileFrom = from;
        fileTo = to;
        //files are loaded ....
    }

    @Test
    public void testA() {
        //....
    }

    @Test
    public void testB() {
        //....
    }

    //....
}

提前致谢。

PS:当然我可以通过调用所有方法来测试一个 'as TEST' 声明的方法来解决问题。 Bur 我想要一个更好的解决方案。

说明:这就是 JUnit 的工作原理。有 a new class instance for each test.

创建文件编号到文件内容的静态映射。在您的构造函数中,测试您是否已经加载了该文件。如果没有,加载它。如果是,请跳过!