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

执行mvn test时maven-surefire-plugin报错:testng.xml文件无效

Maven执行TestNG测试报错:Suite文件无效

我要运行的测试类路径为meropadhaiseleniumframework/src/test/java/clinchtech/Tests/BuyCourse.java,TestNG配置文件testng.xml位于meropadhaiseleniumframework/src/test/resources/testng.xml,配置代码如下:

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<!-- 要并行执行测试,需添加parallel="tests" thread-count="2",表示2个<test></test>并行执行,实际项目中不建议这么做 -->
<suite name="MyTestSuite">
    <parameter name="URL" value="https://demo.meropadhai.com"/>
    <listeners>
        <listener class-name='TestComponents.Listeners'/>
    </listeners>
    <test name="java">
        <classes>
            <!-- 使用包含包名的全限定类名 -->
            <class name="Tests.BuyCourse" />
            <!-- <class name="TestNG.Tut1"/> -->
        </classes>
    </test>
</suite>

在终端执行mvn test命令时,抛出如下错误:

执行项目meropadhaiseleniumframework的org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M3:test (default-test)目标失败:测试执行失败。
[错误] 
[错误] 请查看/Users/meropadhai6/Documents/GitHub/meropadhai-selenium/meropadhaiseleniumframework/target/surefire-reports获取单个测试结果。
[错误] 请查看转储文件(如果存在)[date].dump、[date]-jvmRun[N].dump和[date].dumpstream。
[错误] 分叉进程中出现错误
[错误] 套件文件/src/test/resources/testng.xml不是有效文件
[错误] org.apache.maven.surefire.booter.SurefireBooterForkException: 分叉进程中出现错误
[错误] 套件文件/src/test/resources/testng.xml不是有效文件
[错误]         at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:657)
[错误]         at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:283)
[错误]         at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:246)
[错误]         at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1161)
[错误]         at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:1002)
[错误]         at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:848)
[错误]         at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:126)
[错误]         at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:328)
[错误]         at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:316)
[错误]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
[错误]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:174)
[错误]         at org.apache.maven.lifecycle.internal.MojoExecutor.access$000(MojoExecutor.java:75)
[错误]         at org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:162)
[错误]         at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute(DefaultMojosExecutionStrategy.java:39)
[错误]         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:159)
[错误]         at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:105)
[错误]         at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:73)
[错误]         at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:53)
[错误]         at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:118)
[错误]         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:261)
[错误]         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:173)
[错误]         at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:101)
[错误]         at org.apache.maven.cli.MavenCli.execute(MavenCli.java:906)
[错误]         at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:283)
[错误]         at org.apache.maven.cli.MavenCli.main(MavenCli.java:206)
[错误]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[错误]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[错误]         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[错误]         at java.base/java.lang.reflect.Method.invoke(Method.java:568)
[错误]         at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:283)
[错误]         at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:226)
[错误]         at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:407)
[错误]         at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:348)

解决办法

1. 修正TestNG配置中的类全限定名

测试类实际包路径是clinchtech.Tests,但配置文件中仅写了Tests.BuyCourse,缺少上层包名导致TestNG无法定位类。修改为:

<class name="clinchtech.Tests.BuyCourse" />

2. 确保Maven能正确识别testng.xml文件

有两种实现方式:

  • 方式一:在pom.xml中配置Surefire插件
    在项目根目录的pom.xml中,找到<build><plugins>节点,添加以下配置指定TestNG配置文件路径:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.0.0-M3</version>
    <configuration>
        <suiteXmlFiles>
            <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
        </suiteXmlFiles>
    </configuration>
</plugin>
  • 方式二:执行命令时指定配置文件
    在meropadhaiseleniumframework项目根目录下执行:
mvn test -DsuiteXmlFile=src/test/resources/testng.xml

3. 确认执行命令的工作目录

必须在meropadhaiseleniumframework项目根目录下执行mvn test,否则Maven无法识别项目结构和配置文件路径。

内容的提问来源于stack exchange,提问作者Suraj Nepali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 18:23:10