Mad*_*iha 13 java spring mutation-testing pitest spring-boot
我有以下内容:
public class UnsetProperty extends Command {
@Resource
private SetProperty setProperty;
public String parse(String[] args) {
if (args.length != 4) {
throw new RuntimeException("Incorrect number of arguments. Expected 4. Got " + args.length);
}
String publisher = args[0];
String version = args[1];
String mode = args[2];
String property = args[3];
/*
* Unsetting a property is done by changing the current property to null.
* Technically, the old property doesn't get changed, a new one is inserted with
* a higher revision number, and it becomes the canonical one.
*/
setProperty.setProperty(publisher, version, mode, property, null, false);
return "";
}
}
Run Code Online (Sandbox Code Playgroud)
以及以下测试:
public class UnsetPropertyTest extends CommandTest {
@Configuration
public static class Config {
@Bean(name = "mockSetProperty")
public SetProperty getSetProperty() {
return mock(SetProperty.class);
}
@Bean
public UnsetProperty getUnsetProperty() {
return new UnsetProperty();
}
}
@Resource
@InjectMocks
private UnsetProperty unsetProperty;
@Resource(name = "mockSetProperty")
private SetProperty setProperty;
// ... SNIP ...
@Test
public void testCallsSetPropertyWithCorrectParameters() throws SQLException, TaboolaException {
final String[] args = new String[]{"publisher", "version", "mode", "property"};
final String output = unsetProperty.parse(args);
verify(setProperty).setProperty("publisher", "version", "mode", "property", null, false);
// The above line should have killed the mutation!
verifyNoMoreInteractions(setProperty);
assertThat(output).isEqualTo("");
}
}
Run Code Online (Sandbox Code Playgroud)
测试通过,如预期的那样.当我通过PIT运行时,我得到以下结果
33 1. removed call to my/package/SetProperty::setProperty ? SURVIVED
Run Code Online (Sandbox Code Playgroud)
第33行在类代码中突出显示.
检查的测试如下:
my.package.UnsetPropertyTest.testCallsSetPropertyWithCorrectParameters(my.package.UnsetPropertyTest)
(32毫秒)my.package.UnsetPropertyTest.testUnsetThrowsForIncorrectNumberOfParameters(my.package.UnsetPropertyTest)
(3毫秒)现在:
args
)时,测试失败.正如所料verify(setProperty).setProperty(...)
)参数时,测试失败.正如所料.为什么突变存活?
我正在使用Java 8,Mockito 1.9.5和PIT 1.1.4.
多年后,但似乎没有人提到(Spring)@Resource
和(Mockito)@InjectMocks
是相互排斥的解决方案。你有多个生成的子类UnsetProperty
,所以 PIT 对正在发生的事情感到困惑。
归档时间: |
|
查看次数: |
1245 次 |
最近记录: |