获取java.lang.RuntimeException:java.lang.NullPointerException

时间:2016-11-11 10:29:15

标签: java selenium

public  class TestScenario1 {

    @Test (dataProvider = "test")
    public void execute(String TestCol1,String TestCol2, String TestCol3,String TestCol4) throws Exception {            
        homePage hp = new homePage();
        hp.perform(TestCol1, TestCol2, TestCol3, TestCol4); 
    }

    @DataProvider(name= "test")
    public Object[][] testcase(ITestContext context) {
        String filepath = executionBase.CONFIG.getProperty("filepath");
        // String filepath = "D://workspace//Project//data//testData.xlsx";
        String sheetname = "Suite";
        return executionBase.getTestData(filepath, sheetname);
    } 
}

如果我执行上面的代码,它会给我以下错误: SKIPPED:执行 java.lang.RuntimeException:java.lang.NullPointerException     at org.testng.internal.MethodInvocationHelper.invokeDataProvider(MethodInvocationHelper.java:162)     在org.testng.internal.Parameters.handleParameters(Parameters.java:430)

但如果我评论这一行 String filepath = executionBase.CONFIG.getProperty(" filepath"); 并执行以下, String filepath =" D://workspace//Project//data//testData.xlsx" ;; 它工作正常

executionBase.class引用的构造函数代码如下,

public executionBase() throws IOException, FileNotFoundException {
    CONFIG = new Properties();
    FileInputStream ip = new FileInputStream(System.getProperty("user.dir")+ "//config//config.properties");
    CONFIG.load(ip);
}

config.properties文件条目是这样的, 文件路径= d:\工作空间\项目\数据\ testData.xlsx

executionBase.class的函数适用于config.properties中提供的其他路径变量,但不确定为什么我得到的Null值相同 @DataProvider(name =" test")注释

2 个答案:

答案 0 :(得分:0)

Properties.load()将转义回斜杠,尝试在配置文件中使用双反斜杠,或更改为正斜杠:

filepath=D:/workspace/Project/data/testData.xlsx

您也可以尝试:

String content = IOUtils.toString(ip, Charset.defaultCharset());
content = content.replaceAll("\\","\\\\");
CONFIG.load(content);

编辑:从我所看到的情况来看,在运行TestScenario类时,似乎没有初始化您的executionBase。检查executionBase()是如何被调用的,并在DataProvider中调用它之前验证它的调用。

答案 1 :(得分:0)

我遇到了完全相同的问题,打开您的测试数据表,然后按“ CTRL + END”,如果它不是单元格(lastrow,lastcolumn),则手动右键单击该行或列并删除它。保存文件并运行它,对我有用!

相关问题