Csv 参数化junit测试
我有一个带有许多变量的jUnit4测试用例。我从外部csv文件中读取这些变量。我想要的是,对于文件中的每一行输入参数,测试将运行一次。我认为这可以通过使用@Parameterized来实现 但我不知道如何 现在我有这样的事情Csv 参数化junit测试,csv,junit,junit4,Csv,Junit,Junit4,我有一个带有许多变量的jUnit4测试用例。我从外部csv文件中读取这些变量。我想要的是,对于文件中的每一行输入参数,测试将运行一次。我认为这可以通过使用@Parameterized来实现 但我不知道如何 现在我有这样的事情 @Test ... readFromCSV(filename); String carName = varFromFile[0]; selectItemFromList(fieldName, carName); carName是csv文件中的一条记录。我应该如何更改它,以
@Test
...
readFromCSV(filename);
String carName = varFromFile[0];
selectItemFromList(fieldName, carName);
carName是csv文件中的一条记录。我应该如何更改它,以便从文件中获取多个carName条目,并为每个条目运行一个测试
编辑:
还有两件事。从文件中读取的内容如下所示
CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), ';');
String [] nextValue;
String [] header = reader.readNext();
System.out.println(header[0] + " : " + header[1] + "etc...");
while ((nextValue = reader.readNext()) != null) {
System.out.println(nextValue[0] + " : " + nextValue[1] + "etc...");
}
参数化测试
@RunWith(value = Parameterized.class)
public class testParametrized {
private final TestParameters parameters;
public static class TestParameters {
String recId;
String carName;
}
public testParametrized(TestParameters parameters) {
this.parameters = parameters;
System.out.println(parameters);
}
@Parameters
public static Collection<Object[]> data() throws Exception {
Object[][] data = new Object[][] {
{ new TestParameters() },
{ new TestParameters() }
};
return Arrays.asList(data);
}
@Test
public void pushTest() {
System.out.println("Parameters : " + parameters);
}
}
@RunWith(值=参数化的.class)
公共类testParameterized{
私有最终测试参数;
公共静态类TestParameters{
字符串recId;
丝状肉桂;
}
公共TestParameterized(TestParameters){
此参数=参数;
System.out.println(参数);
}
@参数
公共静态集合数据()引发异常{
对象[][]数据=新对象[][]{
{new TestParameters()},
{new TestParameters()}
};
返回数组.asList(数据);
}
@试验
公共测试(){
System.out.println(“参数:”+参数);
}
}
如何将两者连接起来,以进行从csv文件获取参数的测试?查看以下内容:
@RunWith(org.junit.runners.Parameterized.class)
public class Test {
private final TestParameters parameters;
public static class TestParameters {
int parameter1;
String parameter2;
}
@Parameters
public static Collection<Object[]> data() {
// you can read you csv file here
return Arrays.asList(new Object[] { new TestParameters() }, new Object[] { new TestParameters() });
}
public Test(TestParameters parameters) {
this.parameters = parameters;
System.out.println(parameters);
}
@org.junit.Test
public void test1() {
System.out.println("test1: " + parameters);
}
}
}
@RunWith(org.junit.runners.Parameterized.class)
公开课考试{
私有最终测试参数;
公共静态类TestParameters{
int参数1;
字符串参数2;
}
@参数
公共静态收集数据(){
//您可以在此处读取csv文件
返回Arrays.asList(新对象[]{new TestParameters()},新对象[]{new TestParameters()});
}
公共测试(测试参数){
此参数=参数;
System.out.println(参数);
}
@org.junit.Test
公共void test1(){
System.out.println(“test1:+参数);
}
}
}
此数据方法(用@Parameters注释)必须返回构造函数参数数组的集合,对于该集合中的每个条目,将创建新的测试类实例并执行测试。请检查:
@RunWith(org.junit.runners.Parameterized.class)
public class Test {
private final TestParameters parameters;
public static class TestParameters {
int parameter1;
String parameter2;
}
@Parameters
public static Collection<Object[]> data() {
// you can read you csv file here
return Arrays.asList(new Object[] { new TestParameters() }, new Object[] { new TestParameters() });
}
public Test(TestParameters parameters) {
this.parameters = parameters;
System.out.println(parameters);
}
@org.junit.Test
public void test1() {
System.out.println("test1: " + parameters);
}
}
}
@RunWith(org.junit.runners.Parameterized.class)
公开课考试{
私有最终测试参数;
公共静态类TestParameters{
int参数1;
字符串参数2;
}
@参数
公共静态收集数据(){
//您可以在此处读取csv文件
返回Arrays.asList(新对象[]{new TestParameters()},新对象[]{new TestParameters()});
}
公共测试(测试参数){
此参数=参数;
System.out.println(参数);
}
@org.junit.Test
公共void test1(){
System.out.println(“test1:+参数);
}
}
}
此数据方法(用@Parameters注释)必须返回构造函数参数数组的集合,对于该集合中的每个条目,将创建新的测试类实例,并执行测试。这很好
private TestParameters parameters;
public static class TestParameters {
//variables
}
public myTest(TestParameters parameters) {
this.parameters = parameters;
}
@Parameters
public static Collection<Object[]> data() throws Exception {
Collection<Object[]> parametersProvided = new ArrayList<Object[]>();
String[][] datas = readFromCSV("data.csv");
for (String[] nextValue : datas) {
TestParameters testContainer = new TestParameters();
//variables
//
parametersProvided.add(new Object[] { testContainer });
}
return parametersProvided;
}
@Test
public void pushTest() {
System.out.println("Parameters : " + parameters);
}
私有测试参数;
公共静态类TestParameters{
//变数
}
公共myTest(测试参数){
此参数=参数;
}
@参数
公共静态集合数据()引发异常{
集合参数provided=new ArrayList();
字符串[][]datas=readFromCSV(“data.csv”);
for(字符串[]下一个值:数据){
TestParameters testContainer=新的TestParameters();
//变数
//
参数provided.add(新对象[]{testContainer});
}
返回参数已提供;
}
@试验
公共测试(){
System.out.println(“参数:”+参数);
}
这很好用
private TestParameters parameters;
public static class TestParameters {
//variables
}
public myTest(TestParameters parameters) {
this.parameters = parameters;
}
@Parameters
public static Collection<Object[]> data() throws Exception {
Collection<Object[]> parametersProvided = new ArrayList<Object[]>();
String[][] datas = readFromCSV("data.csv");
for (String[] nextValue : datas) {
TestParameters testContainer = new TestParameters();
//variables
//
parametersProvided.add(new Object[] { testContainer });
}
return parametersProvided;
}
@Test
public void pushTest() {
System.out.println("Parameters : " + parameters);
}
私有测试参数;
公共静态类TestParameters{
//变数
}
公共myTest(测试参数){
此参数=参数;
}
@参数
公共静态集合数据()引发异常{
集合参数provided=new ArrayList();
字符串[][]datas=readFromCSV(“data.csv”);
for(字符串[]下一个值:数据){
TestParameters testContainer=新的TestParameters();
//变数
//
参数provided.add(新对象[]{testContainer});
}
返回参数已提供;
}
@试验
公共测试(){
System.out.println(“参数:”+参数);
}