一些参数不同而其他参数保持不变的 Junit 测试
Junit test where some parameters differ and other remains same
我有以下用于 junit 测试的输入参数。
基本上我需要测试一种算法,该算法将 inputFile 和其他一些参数作为输入并生成一些数据。此数据需要与 referenceData 进行比较(referenceData 文件也是测试的输入参数之一)。如果算法产生的数据与参考数据相同,则测试通过,否则失败。
inputFile // .xml File - is different for each test. there are total five.
param 1 //remains same
param 2 //remains same
param 3 //remains same
param 4 //remains same
param 5 //remains same
ReferenceData // .csv File - is different for each test. there are total five
我的困惑是:
1)参数化的jUnit是否适合这种场景?如果是的话,请问我应该如何实施? #
2)如果 jUnit 不适合这种情况,那么我还能使用什么?
3) 我应该在 junit 测试的 setUp 方法中从 .properties 文件中读取这些参数吗?这是一个好习惯吗?
您可以使用 JUnitParams 库实现此目的。
将您的 xml 和 csv 文件放入项目的 /src/test/resources
文件夹中(对 maven/gradle 个项目有效)。
并像这样在测试中使用它们:
@RunWith(JUnitParamsRunner.class)
public class ServiceTest {
@Test
@Parameters({
"first.xml, first.csv",
"second.xml, second.csv",
"third.xml, third.csv"
})
public void shouldServe(String xmlFilePath, String csvFilePath) {
String xmlFileContent = readContent(xmlFilePath);
String csvFileContent = readContent(csvFilePath);
// call your business method here passing
// dynamic xml, csv and static params
}
}
其中 readContent
是从文本文件中读取内容的方法。
我有以下用于 junit 测试的输入参数。
基本上我需要测试一种算法,该算法将 inputFile 和其他一些参数作为输入并生成一些数据。此数据需要与 referenceData 进行比较(referenceData 文件也是测试的输入参数之一)。如果算法产生的数据与参考数据相同,则测试通过,否则失败。
inputFile // .xml File - is different for each test. there are total five.
param 1 //remains same
param 2 //remains same
param 3 //remains same
param 4 //remains same
param 5 //remains same
ReferenceData // .csv File - is different for each test. there are total five
我的困惑是:
1)参数化的jUnit是否适合这种场景?如果是的话,请问我应该如何实施? #
2)如果 jUnit 不适合这种情况,那么我还能使用什么?
3) 我应该在 junit 测试的 setUp 方法中从 .properties 文件中读取这些参数吗?这是一个好习惯吗?
您可以使用 JUnitParams 库实现此目的。
将您的 xml 和 csv 文件放入项目的 /src/test/resources
文件夹中(对 maven/gradle 个项目有效)。
并像这样在测试中使用它们:
@RunWith(JUnitParamsRunner.class)
public class ServiceTest {
@Test
@Parameters({
"first.xml, first.csv",
"second.xml, second.csv",
"third.xml, third.csv"
})
public void shouldServe(String xmlFilePath, String csvFilePath) {
String xmlFileContent = readContent(xmlFilePath);
String csvFileContent = readContent(csvFilePath);
// call your business method here passing
// dynamic xml, csv and static params
}
}
其中 readContent
是从文本文件中读取内容的方法。