Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有输入文件的JUnitParamsRunner-字符串参数问题_Java_Csv_Junit - Fatal编程技术网

Java 带有输入文件的JUnitParamsRunner-字符串参数问题

Java 带有输入文件的JUnitParamsRunner-字符串参数问题,java,csv,junit,Java,Csv,Junit,我想将JUnit测试参数移动到单独的CSV文件中。我这样使用JUnitParamsRunner: @RunWith(JUnitParamsRunner.class) public class TestClass { ... @Test @FileParameters("src/test/resources/input.csv") public void testMethod(int assertResult, String inputMark) throws Interrupte

我想将JUnit测试参数移动到单独的CSV文件中。我这样使用JUnitParamsRunner:

@RunWith(JUnitParamsRunner.class)
public class TestClass {
...
@Test
    @FileParameters("src/test/resources/input.csv")
    public void testMethod(int assertResult, String inputMark) throws InterruptedException {
....
我的CSV文件是这样的

2,"xxx"
2,"xxx"
2,"xxxx,xxx-1"
4,"xxxx xxxxx-xx"

当我运行测试参数“xxxx,xxx-1”时,由于参数数量错误(我认为是因为里面的逗号),它给了我java错误。在我的场景中,如何在CVS文件中传递带有特殊符号的字符串参数?

提供自定义映射程序来解析CSV数据:

@RunWith(JUnitParamsRunner.class)
public class TestClass {

    @Test
    @FileParameters(value = "src/test/resources/input.csv", mapper = CustomMapper.class)
    public void testMethod(int assertResult, String inputMark) {}

    public static class CustomMapper extends IdentityMapper {
        @Override
        public Object[] map(Reader reader) {
            Object[] map = super.map(reader);
            List<Object> result = new LinkedList<Object>();
            for (Object lineObj : map) {
                String line = lineObj.toString();
                int index = line.indexOf(",");
                String arg1 = line.substring(0, index);
                String arg2 = line.substring(index + 1, line.length());
                result.add(new Object[] {arg1, arg2});
            }
            return result.toArray();
        }
    }
}
@RunWith(JUnitParamsRunner.class)
公共类TestClass{
@试验
@文件参数(value=“src/test/resources/input.csv”,mapper=CustomMapper.class)
public void testMethod(int-assertResult,String-inputMark){}
公共静态类CustomMapper扩展了IdentityMapper{
@凌驾
公共对象[]映射(读卡器){
Object[]map=super.map(读卡器);
列表结果=新建LinkedList();
用于(对象线对象:贴图){
String line=lineObj.toString();
int index=line.indexOf(“,”);
字符串arg1=line.substring(0,索引);
字符串arg2=line.substring(索引+1,line.length());
添加(新对象[]{arg1,arg2});
}
返回result.toArray();
}
}
}
对于更复杂的解决方案,您应该在
CustomMapper
中使用regexp来正确解析CSV数据