0

我的 Java 类没有运行。我有一个带有 Apache POI 的 @DataProvider 来从 Excel 文件中读取数据并在网页中设置该值。但脚本以 No test found 错误结束。这是我的代码:

package testCases;

import org.openqa.selenium.By;
import org.testng.Reporter;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;


import base.TestBase;

public class StudentRegistrationForm extends TestBase {

    
    @Test(dataProvider = "getData")
    public void addStudent(String fname, String email, String CurrentAddress,String PermAddress) {
        

        System.setProperty("org.uncommons.reportng.escape-output", "false");
        //driver.get(confg.getProperty("testsiteurl"));
        driver.get(confg.getProperty("url2"));
        log.debug("Navigated to : " + confg.getProperty("url2"));
        
        driver.findElement(By.cssSelector(or.getProperty("fullname"))).sendKeys(fname);
        driver.findElement(By.cssSelector(or.getProperty("email"))).sendKeys(email);
        driver.findElement(By.cssSelector(or.getProperty("currentAddress"))).sendKeys(CurrentAddress);
        driver.findElement(By.cssSelector(or.getProperty("permAddress"))).sendKeys(PermAddress);
        driver.findElement(By.cssSelector(or.getProperty("submit"))).click();
        log.debug("Completed Test 2 - Student Registration Form");
        Reporter.log("Completed Test 2 - Student Registration Form");
    }

    @DataProvider(name="getData")
    public Object[][] getData(){
        
            String SheetName = "sheet1";
    
            int rows = excel.getRowCount(SheetName);
            int cols = excel.getColumnCount(SheetName);
    
            Object[][] data = new Object[rows - 1][cols];
    
            for (int RowNum = 2; RowNum < rows; RowNum++) {
                for (int colNum = 0; colNum < cols; colNum++) {
                    data[RowNum - 2][colNum] = excel.getCellData(SheetName, colNum, RowNum);
                }
            }
        return data;
    }
}

这是我在 Eclipse 控制台中的输出。

================================================= 默认测试测试运行:0,失败:0,跳过:0

================================================= 默认套件总计测试运行:0,通过:0,失败:0,跳过:0

[TestNG] 未找到测试。没有运行 用法:[options] 要运行的 XML 套件文件 选项:-alwaysrunlisteners 即使​​跳过的方法也应该运行 MethodInvocation 侦听器 默认值:true -configfailurepolicy 配置失败策略(跳过或继续) -d 输出目录 -dataproviderthreadcount 要运行的线程数运行数据提供者时使用 -dependencyinjectorfactory TestNG 应该使用的依赖注入器工厂实现。-excludegroups 逗号分隔的要排除的组名列表 -failwheneverythingskipped 如果跳过所有测试并且没有运行任何测试,TestNG 是否应该执行失败。默认值:false -groups 要运行的组名称的逗号分隔列表 -junit JUnit 模式 默认值:false -listener 的列表。实现 ITestListener 或 ISuiteListener 的类文件或类名列表 -methods 以逗号分隔的测试方法 默认值:[] -methodselectors 实现 IMethodSelector 的 .class 文件或类名列表 -mixed 混合模式 - 自动检测当前测试的类型并运行它带有适当的运行器 默认值:false -objectfactory .class 文件列表或实现 ITestRunnerFactory 的类名列表 -parallel 并行模式(方法、测试或类) 可能的值:[测试、方法、类、实例、无、真、假] -端口 自定义报告侦听器的端口 -reporter 扩展配置 -spilistenerstoskip 逗号分隔的侦听器的完全限定类名,应该跳过通过服务加载器连接的侦听器。默认值:-suitename 测试套件的默认名称,如果未在套件定义文件或源代码中指定 -suitethreadpoolsize 用于运行套件的线程池大小 默认值:1 -testclass 测试类列表 -testjar 包含测试的 jar 文件 -testname 测试的默认名称,如果未指定在 suitefinition 文件或源代码中 -testnames 要运行的测试名称列表 -testrunfactory, -testRunFactory 用于创建测试的工厂 -threadcount 并行运行测试时使用的线程数 -threadpoolfactoryclass TestNG 应该使用的线程池执行器工厂实现。-usedefaultlisteners 是否使用默认监听器 默认值:true -log, -verbose 详细级别 -xmlpathinjar jar 文件中 xml 文件的完整路径(仅在指定 -testjar 时有效) 默认值:testng.xml 1 -testclass 测试类列表 -testjar 包含测试的 jar 文件 -testname 测试的默认名称,如果未在 suitefinition 文件或源代码中指定 -testnames 要运行的测试名称列表 -testrunfactory, -testRunFactory 用于运行的工厂create tests -threadcount 并行运行测试时使用的线程数 -threadpoolfactoryclass TestNG 应该使用的线程池执行器工厂实现。-usedefaultlisteners 是否使用默认监听器 默认值:true -log, -verbose 详细级别 -xmlpathinjar jar 文件中 xml 文件的完整路径(仅在指定 -testjar 时有效) 默认值:testng.xml 1 -testclass 测试类列表 -testjar 包含测试的 jar 文件 -testname 测试的默认名称,如果未在 suitefinition 文件或源代码中指定 -testnames 要运行的测试名称列表 -testrunfactory, -testRunFactory 用于运行的工厂create tests -threadcount 并行运行测试时使用的线程数 -threadpoolfactoryclass TestNG 应该使用的线程池执行器工厂实现。-usedefaultlisteners 是否使用默认监听器 默认值:true -log, -verbose 详细级别 -xmlpathinjar jar 文件中 xml 文件的完整路径(仅在指定 -testjar 时有效) 默认值:testng.xml -testRunFactory 用于创建测试的工厂 -threadcount 并行运行测试时使用的线程数 -threadpoolfactoryclass TestNG 应该使用的线程池执行器工厂实现。-usedefaultlisteners 是否使用默认监听器 默认值:true -log, -verbose 详细级别 -xmlpathinjar jar 文件中 xml 文件的完整路径(仅在指定 -testjar 时有效) 默认值:testng.xml -testRunFactory 用于创建测试的工厂 -threadcount 并行运行测试时使用的线程数 -threadpoolfactoryclass TestNG 应该使用的线程池执行器工厂实现。-usedefaultlisteners 是否使用默认监听器 默认值:true -log, -verbose 详细级别 -xmlpathinjar jar 文件中 xml 文件的完整路径(仅在指定 -testjar 时有效) 默认值:testng.xml

4

1 回答 1

1

上面代码中的 testng 用法没有任何问题。这仅仅意味着数据提供者没有提供数据。您可以在数据对象上放置一个调试点或打印它以查看数据数组是否正在初始化。也许您的 excel 实用程序没有正确编写,或者内部正在吃异常。

于 2022-01-13T05:52:25.567 回答