2015-05-12 6 views
1

Я хочу перенести параметры теста JUnit для разделения CSV-файла. Я использую JUnitParamsRunner так: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" 

Когда я запускаю тестовый параметр «хххх, ххх-1» дает мне ошибку Java из-за неправильного количества аргументов (Думаю по причине запятая внутри). Как передать строковые параметры со специальными символами в CVS-файле в моем сценарии?

ответ

0

Обеспечить пользовательский картографа для анализа данных 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(); 
     } 
    } 
} 

Для более комплексного решения - вы должны использовать регулярное выражение в CustomMapper для корректного анализа данных в формате CSV.

Смежные вопросы