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

无法通过命令行利用TestNG.xml运行Gradle构建的Selenium测试Jar包

解决TestNG执行Jar包时找不到类的问题

1. 修正Gradle打包配置

Gradle默认打包任务不会包含测试类和测试依赖,需要在build.gradle(或build.gradle.kts)中调整配置:

  • 若使用shadowJar插件构建包含所有依赖的Fat Jar,添加以下配置确保测试类被纳入:
    shadowJar {
        // 包含测试代码编译输出
        from sourceSets.test.output
        // 引入测试运行时依赖
        configurations = [project.configurations.testRuntimeClasspath]
    }
    
  • 若使用标准jar任务,需手动指定包含测试类和依赖:
    jar {
        from sourceSets.test.output
        manifest {
            attributes 'Main-Class': 'org.testng.TestNG'
        }
        // 打包测试依赖到Jar中
        from {
            configurations.testRuntimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
        }
    }
    

修改后重新执行打包命令:./gradlew shadowJar(或./gradlew jar)。

2. 验证Jar包结构

解压生成的Jar包,检查是否存在com/xyz/Test1.class文件,同时确认包路径、类名的大小写与TestNG.xml中的配置完全一致(Java类路径严格区分大小写)。

3. 调整TestNG执行命令

  • 确保执行命令时处于项目根目录,避免相对路径错误:
    cd 你的项目根目录路径
    java -cp .\build\libs\untitled-0.1-all.jar org.testng.TestNG .\src\test\resources\Testng.xml
    
  • 若上述方式仍有问题,尝试使用TestNG.xml的绝对路径:
    java -cp .\build\libs\untitled-0.1-all.jar org.testng.TestNG C:\完整路径\src\test\resources\Testng.xml
    

4. 核对TestNG.xml配置

打开TestNG.xml,确认类名配置无拼写错误,示例正确配置如下:

<test name="TestSuite">
    <classes>
        <class name="com.xyz.Test1"/>
    </classes>
</test>

5. 内置TestNG.xml到Jar包执行

将TestNG.xml放入src/test/resources目录,确保Gradle打包时将其纳入Jar的resources路径,之后可直接通过类路径调用:

java -cp .\build\libs\untitled-0.1-all.jar org.testng.TestNG /testng.xml

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:38:13