首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在命令行上使用maven,而在Jenkins管道中却不使用maven呢?

为什么在命令行上使用maven,而在Jenkins管道中却不使用maven呢?
EN

Stack Overflow用户
提问于 2019-06-07 06:50:47
回答 1查看 1.4K关注 0票数 2

我在这里有一个奇怪的问题,我找不到原因:

当在命令行上与maven (和java 11)一起使用pitest时,它按预期工作,但通过声明管道在Jenkins上运行时会导致错误。

部分来自我的maven pom:

代码语言:javascript
运行
复制
<build>
  <plugins>
    <plugin>
      <groupId>org.pitest</groupId>
      <artifactId>pitest-maven</artifactId>
      <version>1.4.8</version>
      <dependencies>
        <dependency>
          <groupId>org.pitest</groupId>
          <artifactId>pitest-junit5-plugin</artifactId>
          <version>0.8</version>
        </dependency>
      </dependencies>
      <configuration>
        <verbose>true</verbose>
      </configuration>
    </plugin>
  </plugins>
</build>

部分来自我的Jenkinsfile:

代码语言:javascript
运行
复制
stage('MutationTesting')
 {
  steps
   {
    bat 'mvn --batch-mode org.pitest:pitest-maven:mutationCoverage'
   }
 }

在此之前,将从管道中调用以下maven命令:

mvn --批处理模式清洁 mvn -批处理模式编译 批处理模式编译器:testCompile:测试-Dmaven.test.failure.ignore=true

在命令行上准确地调用这些命令时,pitest非常有效。

当比较测井结果时,它们几乎相等。

从命令行输出日志:

PIT >>精细:最大可用内存为3609 mb PIT >>精细: MINION :安装坑剂 PIT >>信息:向minion发送13个测试类 PIT >>信息:将测试发送给minion PIT >>信息: MINION : 08:51:20 >>罚款:期望13个测试类来自父级 PIT >>精细:接收的测试类 PIT >>信息:检查环境 PIT >>信息: MINION : 08:51:20 >>信息:找到1次测试 PIT >>信息: MINION : 08:51:20 >>信息:依赖分析将潜在测试的数量减少0。 PIT >>信息: MINION : 08:51:20 >>信息:1测试收到 PIT >>信息: MINION : 08:51:20 >>罚款:运行1台 PIT >>信息: MINION : 08:51:20 >>罚款:收集测试描述的覆盖范围testClass=de.test.Tests,name=creation() PIT >>精细:覆盖生成器Minion退出确定 PIT >>信息:在0秒内计算覆盖范围。 PIT >>精细:覆盖率计算后使用的内存42 mb PIT >>精细:覆盖计算后释放内存201 mb ..。突变输出切断

Jenkins的日志输出-管道:

PIT >>精细:最大可用内存为1813 mb PIT >>精细: MINION :安装坑剂 PIT >>信息:向minion发送13个测试类 PIT >>信息:将测试发送给minion PIT >>信息: MINION : 08:46:28 >>罚款:期待来自父母的13个测试类 PIT >>精细:接收的测试类 PIT >>信息:检查环境 PIT >>信息: MINION : 08:46:29 >>信息:找到1次测试 PIT >>信息: MINION : 08:46:29 >>信息:依赖分析将潜在测试的数量减少0。 PIT >>信息: MINION : 08:46:29 >>信息:1测试收到 PIT >>信息: MINION : 08:46:29 >>罚款:运行1台 PIT >>信息: MINION : 08:46:29 >>罚款:收集测试描述的覆盖范围testClass=de.test.Tests,name=creation() PIT >>精细:覆盖生成器Minion退出确定坑>>信息:在1秒内计算覆盖范围。PIT >>精细:在覆盖率计算后使用内存43 mb PIT >>罚款:在覆盖计算后释放内存177 mb PIT >>信息:创建了0突变测试单元INFO信息构建失败信息?信息总时间: 3.644 s信息完成时间: 2019-06-06T08:46:29+02:00这可能意味着提供的类路径或过滤器存在问题。有关详细信息,请参见http://pitest.org

所以我只能假设环境是有区别的,但哪一种呢?或者是最可怜的虫子?

EN

Stack Overflow用户

发布于 2019-06-09 14:33:03

最有可能的问题是jenkins正在没有编译测试的环境中执行pitest。

最健壮的方法是绑定到配置文件中的测试阶段,而不是直接调用目标。

代码语言:javascript
运行
复制
<profile>
  <id>pitest</id>
    <build>
      <plugins>
        <plugin>
          <groupId>org.pitest</groupId>
          <artifactId>pitest-maven</artifactId>
          <version>1.4.8</version>
          <executions>
            <execution>
              <id>pitest</id>
              <phase>test</phase>
              <goals>
                <goal>mutationCoverage</goal>
              </goals>
            </execution>
          </executions>  
        </plugin>
      </plugins>

然后可以运行Pitest。

代码语言:javascript
运行
复制
mvn -Ppitest test
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56489275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档