我有一个文本文件列表。我无法将它们全部加载在一起,所以我构建了一个参数化测试,其中只有一些文件一起测试(test1:file1 ... file5,test2:file6 ... file10,...)。文件将加载到类的构造函数中。加载的文件范围取决于参数。我在课堂上有不同的测试方法(用于描述下面问题的代码)。
问题:为类的每个测试方法单独调用构造函数。这意味着:使用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:我当然可以通过调用所有方法测试一个“测试”来解决问题。声明的方法。 Bur我想要一个更好的解决方案。
答案 0 :(得分:2)
说明:JUnit的工作原理。有a new class instance for each test。
创建文件编号到文件内容的静态地图。在您的构造函数中,测试您是否已经加载了该文件。如果没有,请加载它。如果是,请跳过!