我被困在一点,需要建议。
在为我的代码编写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,那么有什么方法可以杀死这种突变呢?
发布于 2016-10-20 10:30:28
ValidateArgument.notNull(B);的目的是什么?
我们从您的测试中了解到,当传入null时,它会抛出一个NullPointerException,这就是您所关心的吗?
如果是这样的话,您应该删除这一行代码,因为它是无用的-当您调用NullPointerException时仍然会得到一个method1。也就是说,您的测试指定的行为是相同的。
或者ValidateArgument.notNull对你做了其他重要的事情?也许它会产生一条您认为有用的异常消息?如果是这样的话,您需要编写一个测试来确认消息是存在的。
然而,许多程序员并没有编写测试来指定这样断言的行为(这样做是否合理将取决于您正在工作的上下文/域)。
Pitest有一个功能,允许您避免在通常不经过单元测试(另一个常见的是日志记录)的关注点中创建突变。
如果将full.package.name.ValidateArgument添加到avoidCallsTo配置参数中,则将不再产生此突变。
发布于 2016-10-19 03:57:38
在这里猜测:您是否有一个用null调用B的方法的测试?
您很可能看到,当B为null时,验证方法应该抛出异常。当您从未用null测试该方法时,如果这一行是真正执行的还是不执行,那就没有什么区别了!
https://stackoverflow.com/questions/40121772
复制相似问题