有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用TestNG DataProvider跳过某些测试迭代

我正在使用TestNG数据提供程序读取数据池。xls文件,在名为ReadData的类中包含1017个测试用例和214列

然后,我将214个字符串参数传递到另一个名为EnterData的类中的@Test注释中

@Test(dataProvider="autodata", dataProviderClass = ReadAutoData.class)
public void autoentry(String Quote, String Garage_Zip, etc...) {

我在@Test中创建了一个for循环,只执行ceratin迭代(比如1-10)的操作,总共只输入10个测试用例。我的问题是,在运行结束时,它仍然显示“Total tests run:1017”,而不是仅仅显示10个测试,因为for循环,它们实际上做了任何事情

// Start for loop for entering auto policies
for (int a = start; a <= end; a++)
{
    if (quote == a)
    {       
        System.out.println("Tier = " + Tier);                       
    } 
}

我知道为什么它会显示作为整个数据池运行的测试总数,因为从技术上讲,它传入并运行了数据池中的所有内容,我只是不知道如何让它只显示实际运行的测试数量

基本上,我正在寻找一种将@Test注释本身放入for循环的方法,可能是

编辑:

以下是我当前在ReadAutoData类中读取数据池的代码:

@DataProvider(name = "autodata")
public static Object[][] autodata() {
Object[][] arrayObject = getExcelData("C:/dev/AutoDP.xls","NON-COMBO-DP");
return arrayObject;
}

/**
 * @param File Name
 * @param Sheet Name
 * @return
 */
public static String[][] getExcelData(String fileName, String sheetName) {
    String[][] arrayExcelData = null;
    try {
        FileInputStream fs = new FileInputStream(fileName);
        Workbook wb = Workbook.getWorkbook(fs);
        Sheet sh = wb.getSheet(sheetName);

        int totalNoOfCols = sh.getColumns();
        int totalNoOfRows = sh.getRows();

        arrayExcelData = new String[totalNoOfRows-1][totalNoOfCols];

        for (int i= 1 ; i < totalNoOfRows; i++) {

            for (int j=0; j < totalNoOfCols; j++) {
                arrayExcelData[i-1][j] = sh.getCell(j, i).getContents();
            }

        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
        e.printStackTrace();
    } catch (BiffException e) {
        e.printStackTrace();
    }
    return arrayExcelData;
}

编辑2:

到目前为止,在1017个测试用例中,我已经通过在for循环的开头添加以下内容来显示1007个跳过:

// Start for loop for entering auto policies
    for (int a = start; a <= end; a++)
    {
        if (quote < start) throw new SkipException("Testing skip.");
        if (quote > end) throw new SkipException("Testing skip.");

        if (quote == a)
        {

            System.out.println("Starting Iteration = " + Quote);

然而,它仍然显示有1017个测试正在运行


共 (0) 个答案