我被困在1点并且需要建议。
在为我的代码编写junit时,我无法杀死ValidateArgument.notNull(arg1)变异!!! 需要建议。
代码如下......
public class A{
public void method1(Object B){
ValidateArgument.notNull(B);
..
..
..
}
}
获得
##删除了来电 com / nokia / oss / configurator / rac / common / util / ValidateArgument :: notNull→ 存活
因为返回类型是void
可能是什么方法可以杀死这个突变?
答案 0 :(得分:1)
在这里猜测:你有一个测试用B调用 null 的方法吗?
您很可能会看到,当B为null时,验证方法应抛出异常。当你从不用null测试方法时,如果真的执行了一行就没有区别了!
答案 1 :(得分:0)
ValidateArgument.notNull(B);
的目的是什么?
我们从你的测试中知道它在传递null时会抛出一个NullPointerException,这就是你所关心的一切吗?
如果是这样,你应该删除那行代码,因为它没用 - 当你调用method1时,你仍然会得到一个NullPointerException。即你的测试指定的行为是相同的。
或许ValidateArgument.notNull
对你有什么重要意义吗?也许它会生成一个你觉得有用的异常消息?如果是这样,您需要编写一个确认该消息存在的测试。
然而,许多程序员不会编写指定断言行为的测试(这样做是否有意义取决于您正在使用的上下文/域)。
Pitest有一个功能,可以避免在通常不进行单元测试的问题中创建突变(另一个常见的是记录)。
如果将full.package.name.ValidateArgument
添加到avoidCallsTo配置参数中,将不再生成此突变。