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

Selenium Java+Maven如何不执行测试生成测试Jar供Azure DevOps使用

解决方案

1. 修正Maven项目pom.xml配置

默认Maven打包逻辑不会包含src/test/java下的测试类,且错误的跳过测试参数会直接导致测试代码不被编译,按如下配置插件:

  • 配置编译插件在compile阶段同时完成主代码和测试代码的编译
  • 配置surefire插件仅跳过测试执行,不跳过测试代码编译
  • 配置shade插件生成包含所有依赖、主代码、测试代码的可执行fat jar,避免CD阶段运行时缺类
<build>
    <plugins>
        <!-- 仅跳过测试执行,保留测试代码编译逻辑 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.1.2</version>
            <configuration>
                <skipTests>true</skipTests>
            </configuration>
        </plugin>
        <!-- 编译阶段同时编译主代码和测试代码 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version>
            <executions>
                <execution>
                    <id>build-test-classes</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <!-- 生成包含所有依赖、测试类的可执行jar -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.5.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <testArtifact>true</testArtifact>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <!-- 替换为实际测试执行入口类,可直接使用surefire启动器 -->
                                <mainClass>org.apache.maven.surefire.booter.SurefireBooter</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

2. 修正Azure DevOps CI流水线配置

  • Maven构建任务的执行命令使用clean package -DskipTests=true,禁止使用-Dmaven.test.skip=true参数,该参数会完全跳过测试代码编译,无法将测试类打入jar包
  • 制品上传任务的文件匹配路径设置为$(System.DefaultWorkingDirectory)/**/target/*.jar,仅上传target目录下生成的jar文件,不要关联整个代码仓库目录

3. 本地验证

提交代码前先在本地执行mvn clean package -DskipTests=true,确认target目录下生成了xxx-shaded.jar文件,解压后可看到PageObject类、测试类、第三方依赖包均已包含在内,再推代码触发CI构建即可。

常见构建无jar输出的原因:未配置可执行jar打包插件、错误使用maven.test.skip参数导致测试代码未编译、制品上传路径配置错误匹配不到生成的jar文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:39:15