问题标签 [pitest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
268 浏览

java - 为什么 Jenkins 服务器上的“pitest-maven”构建项目没有加载“org.slf4j.impl.StaticLoggerBinder”类?

在 Pitest-maven 集成项目上创建突变测试时,此错误正在弹出,我认为它没有使用“Java 的简单日志记录外观(SLF4J)”在项目中创建日志。我需要知道,为什么下面提到的类没有加载?任何可能的逻辑推理都会帮助我得到一个想法。谢谢

是的,我已经检查了项目所需的 pom.xml 文件和相关依赖项..

我检查了 log4j2.xml 文件..

控制台日志

我需要知道,如何让 SLF4J 加载类“org.slf4j.impl.StaticLoggerBinder”?提前致谢

0 投票
1 回答
569 浏览

spring-boot - 在 gradle-pitest-plugin 中设置环境变量

拥有一个成功构建的项目,并且将通过所有测试,运行 ptest 时除外。

build.gradle设置为在ext. 在bootRuntest任务上设置了这些环境变量。但是,pitest没有可以像前者那样设置的环境变量的属性。寻找一种方法来设置所需的信息,以便测试作为 ptest 的一部分成功运行。没有变量,测试就没有正确的上下文并失败。

0 投票
1 回答
145 浏览

java - maven 从无处获得 ./m2/repository 中的旧 junit 依赖项

我有 java-maven 项目

在我删除它之后,总是得到 .m2/repository/junit/junit/3.8.1 。我不明白它来自哪里。

我试过依赖树: mvn 依赖:树 -Dverbose | grep "junit" 但它只打印我在项目中真正使用的 5.4.0 junit。

我想了解为什么maven总是下载旧的junit,我该如何调试它?它不在任何 pom.xml 文件中,如果它是传递依赖,为什么它没有显示在依赖树中。真正的问题是我试图在 IDEA 中运行 PItest,它说我有旧的 junit 版本 3.8.1。但我并没有在我的项目中真正使用它。

0 投票
1 回答
168 浏览

cucumber-java - PIT-Cucumber 插件未在功能文件中找到场景

尝试在企业项目中进行 PIT Mutation 测试。可以做现有的 JUNit 测试,但我们也有很多 Cucumber 测试需要成为指标的一部分。在maven项目中添加了pit-cucumber插件,但是输出没有找到任何场景。不确定插件的配置中是否有一些我看不到的秘密。

我得到这个输出:

INFO : 向 minion 发送 0 个测试类

0 投票
1 回答
1054 浏览

java - 如何为 try-resource 和等效的突变体重构幸存的突变体?

我正在试验junit5和pitest。我的测试代码如下所示:

在这个小代码块中,我留下了 4 个我想杀死的幸存突变。杀死可能通过添加/更改测试或重构代码来发生。

我现在的问题是第一个突变是一个等效的突变 - 我不知道如何重构它。其他三个突变是由 try-resource-statement 隐含的。

所以我的问题是如何重构这 4 个突变?因为我确信他们不能被附加/更改的测试杀死。

0 投票
1 回答
1177 浏览

java - 为什么 Pitest 在命令行上与 maven 一起工作,但在 Jenkins-Pipeline 中却不行?

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

在命令行上使用带有 maven(和 java 11)的 Pitest 时,它按预期工作,但是当通过声明性管道在 Jenkins-Server 上运行它时,它会导致错误。

部分来自我的 maven pom:

我的 Jenkinsfile 的一部分:

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

mvn --batch-mode clean

mvn --batch-mode 编译

mvn --batch-mode compiler:testCompile surefire:test -Dmaven.test.failure.ignore=true

在命令行上准确调用这些命令时,pitest 可以完美运行。

比较日志记录结果时,它们几乎相等。

命令行的日志输出:

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

PIT >> FINE : MINION : 安装 PIT 代理

PIT >> INFO : 向 minion 发送 13 个测试类

PIT >> INFO : 向 minion 发送测试

PIT >> INFO : MINION : 08:51:20 PIT >> FINE : 期待来自父级的 13 个测试类

PIT >> FINE : 收到的测试类

PIT >> INFO : 检查环境

PIT >> INFO : MINION : 08:51:20 PIT >> INFO : 找到 1 个测试

PIT >> INFO : MINION : 08:51:20 PIT >> INFO : 依赖分析将潜在测试的数量减少了 0

PIT >> INFO:MINION:08:51:20 PIT >> INFO:收到 1 个测试

PIT >> INFO : MINION : 08:51:20 PIT >> FINE : 运行 1 个单位

PIT >> INFO : MINION : 08:51:20 PIT >> FINE : 收集测试覆盖率描述 [testClass=de.test.Tests, name=creation()]

PIT >> FINE:覆盖生成器 Minion 退出正常

PIT >> INFO : 0 秒内计算的覆盖率。

PIT >> FINE:覆盖计算后使用的内存 42 mb

PIT >> FINE:覆盖计算后的可用内存 201 mb

[...突变输出削减]

Jenkins-Pipeline 的日志输出:

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

PIT >> FINE : MINION : 安装 PIT 代理

PIT >> INFO : 向 minion 发送 13 个测试类

PIT >> INFO : 向 minion 发送测试

PIT >> INFO : MINION : 08:46:28 PIT >> FINE : 期待来自父级的 13 个测试类

PIT >> FINE : 收到的测试类

PIT >> INFO : 检查环境

PIT >> INFO : MINION : 08:46:29 PIT >> INFO : 找到 1 个测试

PIT >> INFO : MINION : 08:46:29 PIT >> INFO : 依赖分析将潜在测试的数量减少了 0

PIT >> INFO:MINION:08:46:29 PIT >> INFO:收到 1 个测试

PIT >> INFO : MINION : 08:46:29 PIT >> FINE : 运行 1 个单位

PIT >> INFO : MINION : 08:46:29 PIT >> FINE : 收集测试覆盖率描述 [testClass=de.test.Tests, name=creation()]

PIT >> FINE:覆盖生成器 Minion 退出正常 PIT >> INFO:在 1 秒内计算覆盖范围。PIT >> FINE:覆盖计算后使用的内存 43 mb PIT >> FINE:覆盖计算后的可用内存 177 mb PIT >> INFO:创建了 0 个变异测试单元 [INFO] ------------- -------------------------------------------------- --------- [信息] 构建失败 [信息] --------------------------------- --------------------------------------- [INFO] 总时间:3.644 s [INFO]完成于:2019-06-06T08:46:29+02:00 [INFO] ------------------------------- ----------------------------------------- [错误] 未能执行目标组织。 Pitest:pitest-maven:1.4.8:mutationCoverage(default-cli)在项目multiuploader上:执行目标org.pitest的default-cli:pitest-maven:1.4.8:mutationCoverage失败:未发现突变。这可能意味着提供的类路径或过滤器存在问题。[错误] 见http://pitest.org了解更多详情。

所以我只能假设环境有所不同 - 但哪一个?还是它是pitest中的一个错误?

0 投票
1 回答
91 浏览

kotlin - 是否有在调试信息中包含源文件的配置?

目前正试图让MicronautPitest一起工作,但由于Micronaut 未在输出类的调试信息中包含源文件而导致 NPE失败。

我想知道是否有办法配置 Micronaut 来支持这一点?

此问题的可重现样本

0 投票
1 回答
168 浏览

java - 即使没有更改源代码,PiTest 在 CI maven 构建中也失败,“输入字节数组有错误的 4 字节结束单元”

在推送新代码时,我的 CI 构建在 org.pitest:mutationCoverage 目标期间失败。我的补丁集对任何源代码都没有更改(只是一个新的空提交),但会打印以下错误:

我为 PiTest 启用了详细日志记录,并为 maven 启用了调试日志记录,但在日志中没有看到任何内容。在线也看不到与此错误类似的任何内容。

插件配置为:

我很难理解错误的来源,因为它似乎根本与任何代码更改无关,但在每个新补丁集上都会发生。

0 投票
1 回答
6284 浏览

junit5 - PiTest无缘无故“改变条件边界突变存活”?

我有一个带有 JUnit 5 测试的小型 Java 11 示例,结果是:

改变条件边界→幸存

主类:

测试类:

从我的角度来看,突变不应该存在,因为:

  1. checkPortOk() 是非负合法值的正常路径
  2. checkPortNegative1() 是当注释发生突变并引发异常时负值的路径。
  3. checkPortNegative2():当没有发生任何突变时,抛出异常并且resultPort仍然为0 - 所以这里的断言是可以的
  4. checkPortNegative2():当 < 0 突变为 < -1 或更低时,不会抛出异常,因此 resultPort 将变为 -1 并且 assert 将失败(突变被杀死)
  5. checkPortNegative2():当 < 0 变为 < 1 或更高时,与 3 以下相同。

所以我的问题是我在这里遗漏了什么,或者它是 Pitest (1.4.9) 中的一个错误?

解决方案

正如@henry 所说,添加以下测试可以解决问题:

0 投票
1 回答
217 浏览

java - 有没有办法更新pitclipse插件中使用的pitest版本?

我最近安装了pitclipse 插件来测试我在eclipse 中的单元测试。现在我面临的问题是pitclipse自pitest 1.1.9以来没有得到任何更新,我真的很想使用最新版本(目前是1.4.9)。

我已经尝试了几件事:首先我正在更新pom.propertiesand pom.xmlineclipse\features\org.pitest.pitclipse.feature_1.1.6.201607050705\META-INF\maven\org.pitest\org.pitest.pitclipse.feature文件夹。

这并没有改变什么。

接下来我尝试更新文件夹org.pitest.osgi_1.1.9.jar, org.pitest.html-report-osgi_1.1.9.jar, org.pitest.command-line-osgi_1.1.9.jar中的罐子。eclipse/plugins为此,我下载了这些 jar 的最新版本(除了那个osgi,因为 mvnrepositiory 没有这个。我用普通pitestjar 替换),替换了这些文件并重命名了新文件以匹配旧文件名。

这打破了pitclipse,所以我再次删除了这些更改。

有没有人面临同样的问题并得到了工作?我将不胜感激任何建议。