变异杀人

时间:2016-10-19 03:48:51

标签: java junit4 mutation-testing pitest

我被困在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可能是什么方法可以杀死这个突变?

2 个答案:

答案 0 :(得分:1)

在这里猜测:你有一个测试用B调用 null 的方法吗?

您很可能会看到,当B为null时,验证方法应抛出异常。当你从不用null测试方法时,如果真的执行了一行就没有区别了!

答案 1 :(得分:0)

ValidateArgument.notNull(B);的目的是什么?

我们从你的测试中知道它在传递null时会抛出一个NullPointerException,这就是你所关心的一切吗?

如果是这样,你应该删除那行代码,因为它没用 - 当你调用method1时,你仍然会得到一个NullPointerException。即你的测试指定的行为是相同的。

或许ValidateArgument.notNull对你有什么重要意义吗?也许它会生成一个你觉得有用的异常消息?如果是这样,您需要编写一个确认该消息存在的测试。

然而,许多程序员不会编写指定断言行为的测试(这样做是否有意义取决于您正在使用的上下文/域)。

Pitest有一个功能,可以避免在通常不进行单元测试的问题中创建突变(另一个常见的是记录)。

如果将full.package.name.ValidateArgument添加到a​​voidCallsTo配置参数中,将不再生成此突变。