Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么pitest在命令行中与maven一起工作,而不是在Jenkins管道中?_Java_Maven_Unit Testing_Jenkins Pipeline_Pitest - Fatal编程技术网

Java 为什么pitest在命令行中与maven一起工作,而不是在Jenkins管道中?

Java 为什么pitest在命令行中与maven一起工作,而不是在Jenkins管道中?,java,maven,unit-testing,jenkins-pipeline,pitest,Java,Maven,Unit Testing,Jenkins Pipeline,Pitest,我这里有一个奇怪的问题,我找不到原因: 在命令行上将pitest与maven(和java11)结合使用时,它的工作原理与预期一致,但在Jenkins服务器上通过声明性管道运行时,会导致错误 来自我的maven pom的部分: <build> <plugins> <plugin> <groupId>org.pitest</groupId> <artifactId>pitest-maven&l

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

在命令行上将pitest与maven(和java11)结合使用时,它的工作原理与预期一致,但在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>
在此之前,将从管道中调用以下maven命令:

mvn—批处理模式清理

mvn—批处理模式编译

mvn—批处理模式编译器:testCompile surefire:test-Dmaven.test.failure.ignore=true

当在命令行上准确地调用这些命令时,pitest可以完美地工作

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

命令行的日志输出:

PIT>>良好:最大可用内存为3609 mb

PIT>>精细:仆从:安装PIT代理

PIT>>信息:向仆从发送13个测试类

PIT>>信息:已向仆从发送测试

PIT>>信息:仆从:08:51:20 PIT>>好:期望家长提供13个测试类

PIT>>罚款:收到测试类

PIT>>信息:检查环境

坑>>信息:仆从:08:51:20坑>>信息:找到1个测试

PIT>>信息:仆从:08:51:20 PIT>>信息:依赖性分析将潜在测试的数量减少了0

维修点>>信息:仆从:08:51:20维修点>>信息:收到1个测试

维修站>>信息:仆从:08:51:20维修站>>精细:运行1个单位

PIT>>信息:仆从:08:51:20 PIT>>精细:收集测试描述的覆盖率[testClass=de.test.Tests,name=creation()]

坑>>良好:覆盖生成器仆从退出正常

PIT>>信息:计算的覆盖率为0秒

PIT>>精细:覆盖率计算后使用内存42 mb

PIT>>精细:覆盖率计算后释放内存201 mb

[…产量削减]

Jenkins管道的日志输出:

PIT>>良好:最大可用内存为1813 mb

PIT>>精细:仆从:安装PIT代理

PIT>>信息:向仆从发送13个测试类

PIT>>信息:已向仆从发送测试

PIT>>信息:仆从:08:46:28 PIT>>很好:期望家长提供13个测试类

PIT>>罚款:收到测试类

PIT>>信息:检查环境

坑>>信息:仆从:08:46:29坑>>信息:找到1个测试

PIT>>信息:仆从:08:46:29 PIT>>信息:依赖性分析将潜在测试的数量减少了0

维修点>>信息:仆从:08:46:29维修点>>信息:收到1个测试

维修站>>信息:仆从:08:46:29维修站>>精细:运行1个单位

PIT>>信息:仆从:08:46:29 PIT>>精细:收集测试描述的覆盖率[testClass=de.test.Tests,name=creation()]

坑>>良好:覆盖生成器仆从退出正常 PIT>>信息:计算的覆盖率为1秒。 PIT>>精细:覆盖率计算后使用的内存为43 mb PIT>>精细:覆盖率计算后释放内存177MB PIT>>信息:创建了0个突变测试单元 [信息]------------------------------------------------------------------------ [信息]生成失败 [信息]------------------------------------------------------------------------ [信息]总时间:3.644秒 [信息]完成时间:2019-06-06T08:46:29+02:00 [信息]------------------------------------------------------------------------ [错误]无法执行目标组织。pitest:pitest maven:1.4.8:mutationCoverage(默认cli)在项目多上传程序上:执行目标组织的默认cli。pitest:pitest maven:1.4.8:mutationCoverage失败:未找到任何突变。这可能意味着提供的类路径或筛选器存在问题。 [错误]有关详细信息,请参阅


所以我只能假设环境是不同的,但是哪一个呢?或者它是pitest中的一个bug?

最可能的问题是,pitest是由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吗?正如我所描述的,我的管道已经编译了测试。我不能认为(如果是这样的话)这是环境/jenkins的问题。我确信测试是在jenkins环境中编译的-更多信息请查看我的问题这证明了这一点,因为我运行SpotBugs/FindBugs等工具,它们也需要编译代码。
<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>
mvn -Ppitest test