Я хочу использовать класс Parameterized Junit для чтения из CSV-файла. Я хочу: -Параметрированный класс runner с 2 аргументами в конструкторе
- Почитаю «placeID» (строка) и добавить его к базовому URL, чтобы сформировать на веб-страницу
- утверждающие, что название Place «имя» (строка), как я ожидаю, чтобы это было за место
вкладка разделителями файл .csv содержит 2 записи следующего образа (будет иметь 100 записи в конечном счете):
132
The Big House
настоящее время я получаю недопустимое исключение аргумента. Каков способ достижения этого? Я предполагаю, что иметь относительный URL-адрес, а затем проверить данные в отдельных файлах будет лучше.
Мой код:
@RunWith(Parameterized.class)
public class PlaceTest {
public static WebDriver driver;
private String placeId;
private String name;
private PropertyPage propertyPage;
public PlaceTest(String page, String name) {
this.placeId = page;
this.name = name;
}
@Parameterized.Parameters
public static Collection data() {
return csvFileAsCollectionOfStringArrays(
System.getProperty("user.dir") +
"/src/test/resources/" +
"place_ids.csv");
}
private static Collection<String[]> csvFileAsCollectionOfStringArrays(String csvFileName) {
List<String[]> csvRows = new ArrayList<String[]>();
String rawCSVRow;
BufferedReader csvFileReader = null;
String delimiter = "\t";
System.out.println("Reading data from " + csvFileName);
try {
csvFileReader = new BufferedReader(new FileReader(csvFileName));
} catch (FileNotFoundException e) {
System.out.println("Could not find file " + csvFileName);
e.printStackTrace();
}
int rowNumber = 1;
try {
if (csvFileReader != null) {
while ((rawCSVRow = csvFileReader.readLine()) != null) {
String delimitedItems[] = rawCSVRow.split(delimiter);
csvRows.add(delimitedItems);
rowNumber++;
}
}
} catch (IOException e) {
System.out.println("Error reading row number " + rowNumber);
e.printStackTrace();
}
try {
assert csvFileReader != null;
csvFileReader.close();
} catch (IOException e) {
System.out.println("Error closing file " + e.getMessage());
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
return csvRows;
}
@BeforeClass
public static void startDriver() {
driver = Driver.get();
}
@Before
public void getNextPage() {
propertyPage = new PropertyPage(driver);
driver.get(TestWebApp.getURL() + this.placeId);
}
@Test
public void checkNamePresent() {
WebElement placeName = propertyPage.checkName();
assertEquals("Expected match on name", this.name, placeName.getText());
}
@AfterClass
public static void quitDriver() {
driver.quit();
}
}
спасибо. Я пробовал это, но все еще получаю: java.lang.IllegalArgumentException: неправильное количество аргументов – Steerpike
возможно, ваш CSV ошибочен – azbarcea