- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
TL;DR 我认为突变应该被杀死,但它幸存了下来。我正在寻找它发生的原因以及如何解决这两件事:(1)超时(2)突变幸存。
详细信息 我有一个 spring
网络应用程序,正在使用 testng
进行测试。我已经提取了代码的相关部分。如果我在提取该问题的代码时引入了任何问题,请原谅。我有一个通过的测试用例,它验证 callFunction 被调用了 8 次。这是使用 verify(a, atLeast(8)).called();
验证的 在看到 piTest 报告后,似乎如果 callFunction
被删除,函数仍然有a.called();
8 次...这是意想不到的。
我已经通过从源代码中删除 callFunction
进行了检查,但测试用例确实失败了。请参阅 Modified1 Rat.java
部分。
我还通过删除 forEach
进行了检查,测试用例确实失败了。参见 Modified2 Rat.java
。
还有一件更有趣的事情,当我只更改 Rat.java
中文本的(格式)位置时,如 Modified3 Rat.java 中所示
部分已更改。 piTest
报告的
Type.java
package lab.rat;
public class Type {
}
Action.java
package lab.rat;
import org.springframework.stereotype.Component;
@Component public class Action {
public void called() {}
}
Rat.java
package lab.rat;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.IntStream;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component public class Rat {
@Autowired private Action a;
public void testee() {
Map<Type, Integer> properties = new HashMap<>();
IntStream
.range(0, 8)
.forEach(index -> properties.put(new Type(), index));
properties
.entrySet()
.stream()
注意下一行
.forEach(entry -> callFunction()); // removed call to lab/rat/Rat::callFunction ? TIMED_OUT
// removed call to java/util/stream/Stream::forEach ? SURVIVED
}
private void callFunction() {
a.called();
}
}
RatTest.java
package lab.rat;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.verify;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import lab.rat.config.SpringConfigurationForTest;
public class RatTest extends SpringConfigurationForTest {
@InjectMocks Rat rat;
@Mock Action a;
@BeforeMethod public void setup() {
MockitoAnnotations.initMocks(this);
}
@Test public void testTestee() {
rat.testee();
verify(a, atLeast(8)).called();
}
}
Modified1 Rat.java -- 测试失败
.stream()
.forEach(entry -> {});
Modified2 Rat.java -- 测试失败
.stream();
Modified3 Rat.java -- 又创建了一个突变
.stream()
.forEach( // removed call to java/util/stream/Stream::forEach ? SURVIVED
// removed call to lab/rat/Rat::callFunction ? TIMED_OUT
entry -> callFunction() // replaced return of integer sized value with (x == 0 ? 1 : 0) ? KILLED
);
最佳答案
多年后,但似乎没有人提到 (Spring) @Component 和 (Mockito) @InjectMocks 是互斥的解决方案。您有多个生成的 Rat 子类在起作用,所以 PIT 只是对发生的事情感到困惑。它可能变异错了。
关于java - piTest 删除了对 "forEach"的调用 SURVIVED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46386599/
我需要使用 PITest 进行突变测试,但我很难尝试通过 Maven 安装它,当我尝试运行 PIT 来执行突变和测试用例时,我在 cmd 中收到此错误: "No plugin found for fo
我们的项目都是由整个公司的主父级设置的。对于我正在处理的项目,我们有一个根 pom,它引用了它下面有许多模块的父级。尝试将 PITest 与这些模块中的任何一个单独使用,或在根模块中使用会导致没有测试
我正在尝试让 Jenkins 在我的项目上运行 pitest。有一个带有子项目的父 build.gradle 这一事实似乎是一个问题。 当运行 gradle pitest 我得到: 12:14:17
我刚刚通过添加构建插件'org.pitest:pitest-maven:1.2.4'在我的maven项目上配置了PiTest,但是当我运行mvncompileorg.pitest:pitest-mav
我的 pom 文件中有以下内容: pom.xml org.pitest pitest-maven
我有一个巨大的项目,我正在使用 Pitest 测试突变测试。该项目采用 OSGi 形式,所有模块都是分开的。我有这样的结构: |-1.myProgramm-parent |-pom.xml |-2.m
我正在尝试在 light4j ( https://github.com/networknt/light-4j ) 的主版本上运行 PITest,这是我或多或少随机选择的一个项目,用于在现实世界代码上尝
我的 Maven 和 Pitest 配置有问题。 Pitest一代突变没问题,但他看不到我的测试类.. 如果你有任何解决方案:D 我有这样的主要源代码/src/main/java/com.plugin
我遇到了 SonarQube 项目的问题。我想计算一些关于测试质量的统计数据,我正在使用 pitest。不幸的是,它没有找到任何可以变异的测试。 这是我正在分析的模块的pom.xml: 4.0
根据 Pitest 的 documentation ,看起来这应该很简单,但它给我带来了一些麻烦。我应该可以拥有 java -cp \ org.pitest.mutationtest.co
碰巧的是,有时某些代码行或方法无法产生将被任何相关测试杀死的突变体。 (例如,我可能正在使用一个空模式对象,并且某些已实现的方法与 prod 无关,因此任何实现(甚至抛出)都是正确的)。 能够告诉pi
当我的Java项目中使用gradle构建时,本地dynamoDB lib文件出现时,我收到以下pi测试异常。似乎pi-test试图打开lib文件。也找不到从pi-test中排除lib文件的方法。 :p
我正在尝试为我的Android本地UnitTests包括突变测试。 我从这里找到了https://pitest.org/框架,该框架尝试使用“官方”推荐的gradle插件包括在内:https://gr
我正在使用 Pitest 进行突变测试,并且我的一个项目需要大量突变体(例如 500 个突变体)。我需要一个矩阵来显示 Pitest 创建了哪些突变体,哪些突变体被哪些测试用例杀死了。我可以手动完成,
这似乎是一个很常见的问题,我个人至少偶然发现了几次。 一些主要原因是: 忘记在运行 pitest 之前运行测试(从而创建测试类):Pitest can't detect class of test ,
我正在使用出色的 PITest 框架。我想知道在 PITest 中是否有与声纳“//NOSONAR”等同的东西,从而某些线路只是被排除在 PITest 覆盖范围之外(所以它在报告中不是红色的)?我知道
我目前正在尝试提取从工具报告中生成的突变,而且我目前正在努力使用 Pitest。 给定一个 XML Pitest 报告,它有一个突变列表;每个 mutation 元素都有 n 个属性,包括 index
有一个可以成功构建并通过所有测试的项目,除非运行pitest。 build.gradle设置为在ext中配置了一些环境变量。在bootRun或test任务上,设置了这些环境变量。但是,pitest不具
我想集成一些mutation testing确保我的junit测试的质量。我想要 sonar 中的结果我的项目的仪表板。 sonar pitest plugin似乎做了我想要的,但是 maven 3
我正在尝试创建一个 ant 脚本来运行 pitest 以便能够自动化我的突变测试。我收到错误: Could not find or load main class org.pitest.mutatio
我是一名优秀的程序员,十分优秀!