Java 解决;空比较“;测试equals()时SonarQube中的错误
SonarQube在我的质量代码报告中给我带来了一个主要错误: 删除对“equals”的调用;与null的比较总是返回false;考虑使用'= = null '检查无效性。 但是,这个Java 解决;空比较“;测试equals()时SonarQube中的错误,java,null,sonarqube,equals,Java,Null,Sonarqube,Equals,SonarQube在我的质量代码报告中给我带来了一个主要错误: 删除对“equals”的调用;与null的比较总是返回false;考虑使用'= = null '检查无效性。 但是,这个equals调用是一个重写调用,这意味着我想测试如果我的对象在equals()方法中实际为null会发生什么 这个问题有解决办法吗?我应该不测试我的对象的可空性,或者我除了忽略这个情况之外别无选择 编辑注释中要求的代码: 对象本身: @Override public boolean equals(Object o
equals
调用是一个重写调用,这意味着我想测试如果我的对象在equals()
方法中实际为null会发生什么
这个问题有解决办法吗?我应该不测试我的对象的可空性,或者我除了忽略这个情况之外别无选择
编辑注释中要求的代码: 对象本身:
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
MyTestedObject other = (MyTestedObject) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (type != other.type)
return false;
return true;
}
测试内部:
@Test
public void test() {
MyTestedObject testedObject = new MyTestedObject();
boolean nullValue = testedObject.equals(null);
Assert.assertFalse(nullValue);
}
SonarQube告诉您代码中有一个bug。
的合同等于
,如果定义明确:
对于任何非空参考值x
,x.equals(null)
应返回false
如果你在重写中做得不一样,那就是你做错了。SonarQube告诉你代码中有一个bug。
的合同等于
,如果定义明确:
对于任何非空参考值x
,x.equals(null)
应返回false
如果您在覆盖中的操作方式不同,则说明您的操作是错误的。显示您的代码。否则我们只能猜测。你是说SonarQube抱怨单元测试中的代码?在这种情况下,可以抑制/忽略它。是的,我想不值得为消除一个问题而付出努力。最好还是照此去做吧。不应该针对测试代码运行。我想您的声纳QUBE分析设置不正确。您是否使用Maven运行分析?向我们展示您的代码。否则我们只能猜测。你是说SonarQube抱怨单元测试中的代码?在这种情况下,可以抑制/忽略它。是的,我想不值得为消除一个问题而付出努力。最好还是照此去做吧。不应该针对测试代码运行。我想您的声纳QUBE分析设置不正确。您是否使用Maven来运行分析?