java - 通过 TestNG 运行测试时出现空指针异常

标签 java selenium-webdriver testng opencsv

我正在使用 CSV 读取器从 DataProvider 的测试函数中获取数据并使用此数据。

TestNG 方法

@Test(dataProvider = "regCSVData", dataProviderClass = LoginData.class)
public void testLoginUsingCSVFile(LoginData loginData){
    driver.get(appURL);
    Login login = PageFactory.initElements(driver, Login.class);
    login.loginToFwbm(loginData);
}

LoginData 类

@DataProvider(name = "regCSVData")
public static Object[][] getCSVData() throws IOException {
    CSVReader csvReader = new CSVReader(new FileReader(
            LoginData.class.getResource("/regdata.csv").getPath()));
    List<String[]>dataList = csvReader.readAll();
    Object[][]data = new Object[dataList.size()][1];
    List<LoginData> logList = new ArrayList<LoginData>();
    for (String[] strArray:dataList){
        LoginData loginData = new LoginData();
        loginData.setUserName(strArray[0].trim());
        loginData.setPassword(strArray[1].trim());
        logList.add(loginData);
    }
    for (int i=0; i<data.length;i++){
        for(int j=0;j<data[i].length;j++){
            data[i][j] = logList.get(i);
        }
    }
    csvReader.close();
    return data;
}

CSV 文件

asdf, pa2
qwerty, pa2
john, pa2

当我使用 TestNG 运行此测试时,出现空指针异常


    java.lang.RuntimeException: java.lang.NullPointerException
        at org.testng.internal.MethodInvocationHelper.invokeDataProvider(MethodInvocationHelper.java:161)
        at org.testng.internal.Parameters.handleParameters(Parameters.java:429)
        at org.testng.internal.Invoker.handleParameters(Invoker.java:1383)
        at org.testng.internal.Invoker.createParameters(Invoker.java:1075)
        at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1180)
        at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
        at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
        at org.testng.TestRunner.privateRun(TestRunner.java:767)
        at org.testng.TestRunner.run(TestRunner.java:617)
        at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
        at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
        at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
        at org.testng.SuiteRunner.run(SuiteRunner.java:240)
        at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
        at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
        at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
        at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
        at org.testng.TestNG.run(TestNG.java:1057)
        at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
        at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
        at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
    Caused by: java.lang.NullPointerException
        at com.fwbm.dataobject.LoginData.getCSVData(LoginData.java:49)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
        at org.testng.internal.MethodInvocationHelper.invokeDataProvider(MethodInvocationHelper.java:135)
        ... 20 more

项目结构图

enter image description here

最佳答案

您必须将该文件添加到“运行配置”中的 classPath 中。然后可以使用 getRessource() 加载文件;

关于java - 通过 TestNG 运行测试时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23871161/

相关文章:

java - 从在 Linux 上运行的 Java 使用 KERBEROS 识别 http 请求

java - 如何在不同的PC上运行jar文件(具有selenium自动化、webdriver)

java - 无法在 MAC 上使用 JAVA 在 Selenium Webdriver 中创建或切换到新选项卡

angularjs - 使用npm Protractor webdriver-manager在其他端口启动Selenium服务器

java - 如何从命令行运行具有多个包的 Selenium testNG 文件?

java - TestNG - 如何在每次并行运行的类中的所有测试之前运行一次安装程序

java - 每个测试为 Jenkins 上的 JUnit 测试套件分离了 stdout/stderr

java - 使用pdfbox在java中将pdf文件转换为图像时缺少文本

java - 使用 Java Rally REST API 附加文件

java - 有没有办法为多个 Runner 类运行的多个功能文件创建一个 Cucumber 报告?