我在这里有一个奇怪的问题,我找不到原因:
当在命令行上与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
复制相似问题