0

我想使用@RunWith (Parameterized.class) 和

@Parameterized.Parameters
public static Collection<String[]> testdata() {
    return Arrays.asList(new String[][] {
            { "inParam1", "inPAram2", "expectedOut1", "expectedOut2" } 
        });
}

实际测试数据由业务人员通过 Excel 创建。

是否有一种简单/通用的方法可以将 Apache POI XSSFSheet 获取到指定的字符串数组集合?

如果是:有人可以提供一个例子吗?

我发现了这个问题:使用 Apache POI 在 TestNG 中进行数据驱动测试 --- 但我希望有一种 3-liner ;-)

4

1 回答 1

2

它不是一个 3 班轮,但假设我已经正确理解了您的需求,您可以执行以下操作:

 Sheet sheet = workbook.getSheetAt(0);
 DataFormatter fmt = new DataFormatter();
 List<List<String>> cellData = new ArrayList<List<String>>();
 for (Row r : sheet) {
    List<String> rd = new ArrayList<String>();
    for (Cell c : r) {
       rd.add(fmt.formatCellValue(c));
    }
    cellData.add(rd);
 }

这将在任何时候为所有定义的行和单元格生成一个字符串列表,每行一个列表,其中每个单元格一个字符串。您可以相当轻松地从列表切换到数组

如果您需要更多地控制包含/不包含哪些单元格/行,包括空单元格/行,请参阅文档中的迭代指南

于 2014-09-17T18:33:36.620 回答