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