用Java测试布尔型变异
我几乎没有Java方面的经验,我面临着一些问题 我有一个看起来像下面的代码,目标是杀死它的所有变异用Java测试布尔型变异,java,mutation-testing,pitest,Java,Mutation Testing,Pitest,我几乎没有Java方面的经验,我面临着一些问题 我有一个看起来像下面的代码,目标是杀死它的所有变异 公共类MyClass{ 受保护的布尔值=false; 公共MyClass(){ 某物=真实; } 布尔isSomething(){ 归还某物; } } 我的测试代码如下所示 tester=MyClass(); assertTrue(tester.isSomething()); 通过在Eclipse上使用pitest运行它,它将生成以下突变(所有突变都与return something语句相关)
公共类MyClass{
受保护的布尔值=false;
公共MyClass(){
某物=真实;
}
布尔isSomething(){
归还某物;
}
}
我的测试代码如下所示
tester=MyClass();
assertTrue(tester.isSomething());
通过在Eclipse上使用pitest运行它,它将生成以下突变(所有突变都与return something
语句相关):
不幸的是,我不能杀死这4个和5个突变,这两个突变都是用-1代替1的。有什么办法可以杀死他们吗?这里有一些问题 首先,您希望启用一些正在生成垃圾突变的实验/研究突变运算符。如果坚持使用默认设置,则不会发生这种情况 与jvm级别一样,布尔表示为0/1的整数。只有以下突变才有意义
- 将1替换为0
- 删除了对成员变量的赋值
公共类MyClass{
受保护的布尔值=真;
布尔isSomething(){
归还某物;
}
}
这在功能上等同于原始代码,但数量较少
其次,你需要测试
既然您已将某物
设置为受保护的,我假设MyClass
有子类?如果它不这样做,那么代码可以进一步减少到
公共类MyClass{
布尔isSomething(){
返回true;
}
}
你只能写一个测试
assertThat(newmyclass().isSomething()).isTrue();
如果存在子类,那么您需要测试来检查setup
something
是否为true,然后断言isSomething
返回true,另一个将其设置为false并断言该方法返回false。这里有一些问题
首先,您希望启用一些正在生成垃圾突变的实验/研究突变运算符。如果坚持使用默认设置,则不会发生这种情况
与jvm级别一样,布尔表示为0/1的整数。只有以下突变才有意义
- 将1替换为0
- 删除了对成员变量的赋值
公共类MyClass{
受保护的布尔值=真;
布尔isSomething(){
归还某物;
}
}
这在功能上等同于原始代码,但数量较少
其次,你需要测试
既然您已将某物
设置为受保护的,我假设MyClass
有子类?如果它不这样做,那么代码可以进一步减少到
公共类MyClass{
布尔isSomething(){
返回true;
}
}
你只能写一个测试
assertThat(newmyclass().isSomething()).isTrue();
如果存在子类,那么您需要进行测试,检查setup
something
是否为true,然后断言isSomething
返回true,另一个将其设置为false并断言方法返回false。我无法坚持PIT的默认配置,因为我需要使用提供给我的那个。这些都是重复的,我真的不知道为什么会这样。我的测试用例中出现了一些RUN_错误,对吗?还有一件事我忘了提:我不允许对源代码进行更改。我不能坚持PIT的默认配置,因为我需要使用提供给我的配置。这些都是重复的,我真的不知道为什么会这样。我在测试用例中遇到了一些RUN_错误,这是正确的吗?另一件我忘记提到的事情:我不允许对源代码进行更改。