gpt4 book ai didi

java - Cobertura 在 Jenkins 上重复测试运行

转载 作者:行者123 更新时间:2023-12-02 03:57:03 26 4
gpt4 key购买 nike

我有一个构建,其中包含 cobertura 作为我的 Jenkins 运行的一部分。然而,我现在意识到它运行了我所有的测试两次。

我在 Jenkins 中将项目设置为 Maven 项目。我的运行目标设置为:clean coberture:cobertura install

我原以为命令的 install 部分只会运行安装目标的其余部分,例如 package.json。但是,它会重新运行编译和所有测试。尽管事实上那里已经进行了测试。

我尝试过配置预构建和构建后步骤的不同组合,但我不断遇到问题。在某些组合中,构建 Artifact (例如 jar)永远不会在 Jenkins 上发布。在其他情况下,测试结果会丢失。

我想也许我需要将构建重新构建为 shell 构建。我想我可以运行命令:mvn clean cobertura:cobertura && mvn install -Dmaven.test.skip=true

我想这会达到我想要的效果。它至少会停止运行所有测试两次。

这是最好的方法还是还有其他方法?

这就是我将 Cobertura 包含在我的 POM 中的方式:

  <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>com.foo.bar</groupId>
<artifactId>my-parent</artifactId>
<version>1.2.1</version>
</parent>

<groupId>com.foo.bar.baz</groupId>
<artifactId>osom</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<description>TODO</description>


<modules>
<module>module1</module>
<module>module2</module>
<module>module3</module>
</modules>

<dependencies>
</dependencies>

<build>

<!-- To define the plugin version in your parent POM -->
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>3.0.3</version>
</plugin>
</plugins>
</pluginManagement>


<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18</version>
<configuration>
<useUnlimitedThreads>true</useUnlimitedThreads>
<parallel>suites</parallel>
<reuseForks>false</reuseForks>
<includes>
<include>**/*Test.java</include>
<include>**/Test*.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>

<!-- use mvn cobertura:cobertura to generate cobertura reports -->
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
<configuration>
<aggregate>true</aggregate>
<format>xml</format>
</configuration>
</plugin>
</plugins>
</reporting>
</project>

最佳答案

我能想到的最好方法是在 Jenkins 中使用“Freestyle”项目。

我让项目运行两个单独的 Maven 命令。 mvn clean cobertura:cobertura 和 mvn install -Dmaven.test.skip=true

这可以防止测试运行两次。

关于java - Cobertura 在 Jenkins 上重复测试运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35343025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com