【发布时间】:2015-03-23 13:43:39
【问题描述】:
我想创建 2 个 JUnit 测试套件。它们都使用相同的测试类,但它们应该使用不同的参数。例如,在测试套件 A 中,我希望从文件 A 收集我的数据并将其写入数据库 A。在测试套件 B 中,我希望从文件 B 收集我的数据并写入数据库B。
我为此使用 testSuites 的原因是:
- 我可以把所有的具体参数放在测试套件类中
- 我可以重用测试类
- 我可以选择运行哪个测试套件。我不希望所有测试总是使用所有可能的参数运行!
问题是我不能真正传递参数。我了解 Parameterized 类与 JUnit 一起使用的方式,但它不允许上面列表中的第 3 点。如果我使用下面的代码,它将使用两个数据库连接运行我的测试类,这不是我想要实现的。
@RunWith(value = Parameterized.class)
public class TestCheckData
{
private File file;
private DatabaseSource databaseSource;
public TestCheckData(File file, DatabaseSource databaseSource)
{
this.file = file;
this.databaseSource = databaseSource;
}
@Parameters
public static Iterable<Object[]> data1()
{
return Arrays.asList(new Object[][]
{
{ TestSuiteA.DATA_FILE_A, TestSuite1.DATABASE_A },
{ TestSuiteB.DATA_FILE_B, TestSuite1.DATABASE_B }
});
}
我已经找到了一些在 spring 上下文 in this question 中传递配置的方法,但我没有使用任何特殊的框架。
【问题讨论】: