我在这里有一个奇怪的问题,我找不到原因:
当在命令行上与maven (和java 11)一起使用pitest时,它按预期工作,但通过声明管道在Jenkins上运行时会导致错误。
部分来自我的maven pom:
<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:
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。
所以我只能假设环境是有区别的,但哪一种呢?或者是最可怜的虫子?
发布于 2019-06-09 14:33:03
最有可能的问题是jenkins正在没有编译测试的环境中执行pitest。
最健壮的方法是绑定到配置文件中的测试阶段,而不是直接调用目标。
<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。
mvn -Ppitest testhttps://stackoverflow.com/questions/56489275
复制相似问题