2

我被困在 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 → SURVIVED 的调用

作为返回类型void,杀死这种突变的可能方法是什么?

4

2 回答 2

1

在这里猜测:您是否有一个测试调用 B 为null的方法?

您很可能会看到,当 B 为空时,验证方法应该抛出异常。当您从不使用 null 测试该方法时,是否真的执行了这一行并没有什么区别!

于 2016-10-19T03:57:38.480 回答
1

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

我们从您的测试中知道,它在传递 null 时会引发 NullPointerException,这就是您关心的全部吗?

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

或者也许ValidateArgument.notNull对你来说还有其他重要的事情?也许它会生成一条您认为有用的异常消息?如果是这样,您需要编写一个测试来确认该消息存在。

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

Pitest 有一个功能可以让您避免在通常不经过单元测试的关注点中创建突变(另一个常见的问题是日志记录)。

如果您添加full.package.name.ValidateArgument到 AvoidCallsTo 配置参数,将不再产生此突变。

于 2016-10-20T10:30:28.750 回答