Java 从TestSuite类向JUnit测试传递参数
我想创建2个JUnit测试套件。它们都使用相同的测试类,但它们都应该使用不同的参数。例如,在测试套件A中,我希望从文件A收集数据并写入数据库A。在测试套件B中,我希望从文件B收集数据并写入数据库B 为此,我使用TestSuite的原因是:Java 从TestSuite类向JUnit测试传递参数,java,junit,Java,Junit,我想创建2个JUnit测试套件。它们都使用相同的测试类,但它们都应该使用不同的参数。例如,在测试套件A中,我希望从文件A收集数据并写入数据库A。在测试套件B中,我希望从文件B收集数据并写入数据库B 为此,我使用TestSuite的原因是: 我可以将所有特定参数放在testsuite类中 我可以重用TestClass 我可以选择运行哪个测试套件。我不希望所有的测试总是使用所有可能的参数运行 问题是我无法真正传递参数。我理解参数化类使用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 }
});
}
@RunWith(值=参数化的.class)
公共类TestCheckData
{
私有文件;
私有数据库源数据库源;
公共TestCheckData(文件文件、数据库源数据库源)
{
this.file=文件;
this.databaseSource=数据库源;
}
@参数
公共静态可编辑数据1()
{
返回Arrays.asList(新对象[][]
{
{TestSuiteA.DATA_文件_A,TestSuite1.DATABASE_A},
{TestSuiteB.DATA_FILE_B,TestSuite1.DATABASE_B}
});
}
我已经找到了一些在spring环境中传递配置的方法,但我没有使用任何特殊的框架。好吧,这会有点不合常规,但您可以在每个套件运行的开始添加不同的测试类,以设置您想要用于该测试的参数。因此,您可以使用以下类:
public abstract class StaticParameters {
public static File dataFileToUse = null;
public static DatabaseSource databaseToUse = null;
}
public class Suite1Params extends StaticParameters {
@BeforeClass
public static void setParams() {
dataFileToUse = DATA_FILE_A;
databaseToUse = DATABASE_A;
}
}
public class Suite2Params extends StaticParameters {
@BeforeClass
public static void setParams() {
dataFileToUse = DATA_FILE_B;
databaseToUse = DATABASE_B;
}
}
然后,您只需将
Suite1Params
或Suite2Params
作为套件列表中的第一个。您可能必须向params类添加一个假的@Test
条目,我不确定suite
运行程序是否需要该条目。您可以修改测试,以便它们从配置文件获取参数。这样您就可以uld始终只有一个套件
可以通过系统属性查找配置文件的路径
然后在调用测试套件时,您可以通过在JVM上使用-D选项更改属性来传入不同的配置文件
因此,例如,如果您将proprerty命名为env.properties
,那么您的命令将是:
%java -Denv.properties=prod.config runMyTests
或
etc您知道在Eclipse中运行单元测试时如何传入配置文件吗?我需要两个配置文件,一个用于套件A,一个用于套件B,但我如何告诉testrunner使用A或B?@user1884155是的。如果您要运行配置…则编辑配置。JRE选项卡有一个文本区域用于输入VM参数。这就是是要添加的
-D
选项(包括“-D”)的放置位置
%java -Denv.properties=dev.config runMyTests