首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >突变杀灭

突变杀灭
EN

Stack Overflow用户
提问于 2016-10-19 03:48:50
回答 2查看 2.4K关注 0票数 2

我被困在一点,需要建议。

在为我的代码编写junit时,我无法杀死ValidateArgument.notNull(arg1)突变!

需要建议。

代码如下..

代码语言:javascript
复制
public class A{

  public void method1(Object B){

          ValidateArgument.notNull(B);
          ..
          ..
          ..
  }
}

获取

移除对com/nokia/oss/configurator/rac/common/util/ValidateArgument::notNull→的调用

由于返回类型是void,那么有什么方法可以杀死这种突变呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-20 10:30:28

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

我们从您的测试中了解到,当传入null时,它会抛出一个NullPointerException,这就是您所关心的吗?

如果是这样的话,您应该删除这一行代码,因为它是无用的-当您调用NullPointerException时仍然会得到一个method1。也就是说,您的测试指定的行为是相同的。

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

然而,许多程序员并没有编写测试来指定这样断言的行为(这样做是否合理将取决于您正在工作的上下文/域)。

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

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

票数 1
EN

Stack Overflow用户

发布于 2016-10-19 03:57:38

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

您很可能看到,当B为null时,验证方法应该抛出异常。当您从未用null测试该方法时,如果这一行是真正执行的还是不执行,那就没有什么区别了!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40121772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档