You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用TestNG+Cucumber自动化Google页面时testng.xml执行报错排查

问题排查:TestNG+Cucumber运行testng.xml提示未找到测试

问题背景

学习TestNG结合Cucumber做自动化测试,目标加载Google主页。直接运行feature文件测试正常,但执行testng.xml时提示未找到测试,无法定位问题。


相关代码与配置

StepDefinitions代码

package com.example.StepDefinitions;

import io.cucumber.java.en.Given;
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;

public class GoogleStepDefs {
    int x = 0;
    ChromeDriver driver;

    @Given("^Launch Google Home Page$")
//    @Test(priority = 1)
    public void launchgoogle(){
        WebDriverManager.chromedriver().setup();
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.get("https://www.google.com/");
        Assert.assertTrue(driver.getTitle().equals("Google"));

        x=1;
        driver.close();
    }
}

TestRunner代码

package com.example;

import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberOptions;

@CucumberOptions(
        plugin = {"html:target/cucumber-reports/cucumber.html"} ,
        features = {"src/test/resource/features/"} ,
        glue = {"StepDefinitions"}
)

public class TestRunner extends AbstractTestNGCucumberTests{

}

Cucumber Feature文件

Feature: Google Test
  Scenario: Open Google Page
    Given Launch Google Home Page

testng.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite">
    <test verbose="2" preserve-order="true" name="G:/Abul Hossain Chowdhury/Projects/testCucumberproject">
        <classes>
            <class name="com.example.StepDefinitions.GoogleStepDefs"> </class>
        </classes>
    </test>
</suite>

问题原因

  1. testng.xml配置错误:直接指定了步骤定义类GoogleStepDefs,但该类中没有TestNG的@Test注解(已被注释),TestNG只会识别带@Test的方法,因此提示未找到测试。
  2. Cucumber与TestNG集成逻辑错误:通过TestNG运行Cucumber测试时,必须通过继承AbstractTestNGCucumberTests的TestRunner类触发执行,而非直接调用步骤定义类。
  3. TestRunner路径配置问题:features路径写为src/test/resource/features/,实际应为src/test/resources/features/(少了一个s),会导致找不到feature文件。

修复方案

  1. 修正testng.xml:将执行类替换为TestRunner,而非步骤定义类:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite">
    <test verbose="2" preserve-order="true" name="Google Test Suite">
        <classes>
            <class name="com.example.TestRunner"> </class>
        </classes>
    </test>
</suite>
  1. 修正TestRunner的路径与包配置:
    • 修正features路径为正确的src/test/resources/features/
    • glue参数建议写全包路径com.example.StepDefinitions,避免包名歧义:
@CucumberOptions(
        plugin = {"html:target/cucumber-reports/cucumber.html"} ,
        features = {"src/test/resources/features/"} ,
        glue = {"com.example.StepDefinitions"}
)
  1. 保持步骤定义类状态:步骤定义类不需要@Test注解,Cucumber会自动通过feature场景关联执行方法。

验证

修改后运行testng.xml,TestNG将调用TestRunner类,触发Cucumber加载feature文件并关联步骤定义,即可正常执行测试。

内容的提问来源于stack exchange,提问作者Abul Hossain Chowdhury

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 19:23:10