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.
创建文件编号到文件内容的静态映射。在您的构造函数中,测试您是否已经加载了该文件。如果没有,加载它。如果是,请跳过!
我有一个文本文件列表。我无法将它们全部加载在一起,因此我构建了一个参数化测试,其中只有一些文件被一起测试(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.
创建文件编号到文件内容的静态映射。在您的构造函数中,测试您是否已经加载了该文件。如果没有,加载它。如果是,请跳过!