通过从Excel

时间:2016-10-15 13:17:22

标签: java excel apache-poi

我在TestNG上编写了一个测试套件。但是我想只运行那些指定如下的测试类:

excel文件的内容如下:

S.No      Test Class      RunFlag
 1        SampleOne          Y
 2        SampleTwo          N
 3        SampleThree        Y

我想只运行那些有' Y'指明他们。

以下是我的方法 - 这是我的跑步者类:

TestNG testNG = new TestNG();
    List<Class> listnerClasses = new ArrayList<Class>();
            Class[] classList = new Class[]{
                    SampleTestOne.class,
                    SampleTestTwo.class};

            listnerClasses.add(SampleListener.class);
            testNG.setDefaultSuiteName("suite");
            testNG.setListenerClasses(listnerClasses);
            testNG.setTestClasses(RunnerMethods.createClassList(classList));
            testNG.run();

上面的类调用方法createClassList()并将Class类型的数组作为参数传递。此方法在RunnerMethods类中显示如下:

static Class[] createClassList(Class[] classList) {
        Class[] finalClassList = new Class[1];
        int counter = 0;
        for (Class cls : classList){
            String flag = readRunFlag(cls.getSimpleName());
            if(flag == "Y"){
                finalClassList[counter] = cls;
                counter++;
            }
            else
                continue;
        }

        return finalClassList;
    }
    private static String readRunFlag(String className){
        String runFlag = null;
        try(FileInputStream fis = new FileInputStream(new File("C:\\Users\\Q2435\\Desktop\\RunControl.xlsx"))){
            XSSFWorkbook workbook = new XSSFWorkbook(fis);
            XSSFSheet sheet = workbook.getSheet("Sheet1");
            int rowNumber = findRow(sheet, className);
            Row row = sheet.getRow(rowNumber);
            Cell cell = row.getCell(1);
            runFlag = cell.toString();
            workbook.close();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return runFlag;
    }
    private static int findRow(XSSFSheet sheet, String cellContent) {

        for (Row row : sheet) {
            for (Cell cell : row) {
                if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                    if (cell.getRichStringCellValue().getString().trim().equals(cellContent)) {
                        return row.getRowNum();  
                    }
                }
            }
        }               
        return 0;
    }

被调用的方法返回NullPointerException。请帮我解决一下。

0 个答案:

没有答案