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")注释
答案 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),则手动右键单击该行或列并删除它。保存文件并运行它,对我有用!