Apache палата общин позволяет:
String myString = IOUtils.toString(myInputStream, "UTF-8");
, Конечно, Вы могли выбрать другие кодировки символов помимо UTF-8.
Также см.: ( документация )
Взято из документации TestNG :
Если вы объявляете, что ваш @DataProvider принимает java.lang.reflect.Method
в качестве первого параметра , TestNG передаст текущий метод тестирования для этого первого параметра. Это особенно полезно, когда несколько методов тестирования используют один и тот же @DataProvider, и вы хотите, чтобы он возвращал разные значения в зависимости от того, для какого метода тестирования он предоставляет данные.
Например, следующий код печатает имя метода тестирования внутри своего @DataProvider:
@DataProvider(name = "dp")
public Object[][] createData(Method m) {
System.out.println(m.getName()); // print test method name
return new Object[][] { new Object[] { "Cedric" }};
}
@Test(dataProvider = "dp")
public void test1(String s) {
}
@Test(dataProvider = "dp")
public void test2(String s) {
}
и поэтому будет отображать:
test1
test2
Это также может быть объединено с решением, предоставленным desolat, для определения данных из контекста и метода соответственно:
@DataProvider(name = "dp")
public Object[][] foodp(ITestContext ctx, Method method) {
// ...
}
Ответ от yshua немного ограничивает, потому что вам все равно нужно жестко закодировать пути к файлам внутри ваш поставщик данных. Это означает, что вам придется изменить исходный код, а затем перекомпилировать, чтобы просто повторно запустить тест. Это лишает смысла использование файлов XML для настройки тестового прогона.
Лучшим, определенно более хитрым, путаницей решения было бы создание фиктивного метода @test, который запускается до набора, принимает ваши пути к файлам в качестве параметров и сохраняет эту информацию в классе, содержащем эти методы тестирования.
Это решение не идеально, но до тех пор, пока TestNG не разрешит лучшую передачу параметров (возможно, это изменилось), это может быть жизнеспособным для ваших нужд.