0
我希望使用參數化Junit類從.csv文件讀取數據。我想: -在構造函數中帶有2個參數的參數化運行器類
- 閱讀「placeID」(一個字符串),並把它添加到基礎URL形成一個網頁
- 斷言地名「名」(一個String)是如我所料它是爲地方
的製表符分隔的.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 2015-02-10 08:33:35
也許你的CSV是錯誤的 – azbarcea 2015-02-10 12:43:58