新的代码覆盖范围,希望获得一些见解...
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Person other = (Person) obj;
if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
return false;
}
if ((this.email == null) ? (other.email != null) : !this.email.equals(other.email)) {
return false;
}
if (this.age != other.age && (this.age == null || !this.age.equals(other.age))) {
return false;
}
return true;
}
我如何在jcoco代码覆盖率中对此进行介绍。
答案 0 :(得分:1)
要对该类进行100%测试,您应该为每个if
和?:
运算符创建一个测试。代码的每个部分都应进行测试。例如,第一个if (this == obj)
,您应该在哪里进行测试
@Test
public void testEqualsSameObj() {
MyClass sut = new MyClass(); // sut == system under test
assertTrue (sut.equals(sut));
}
现在进行下一个传递null的测试:
@Test
public void testEqualsNull() {
MyClass sut = new MyClass(); // sut == system under test
assertFalse (sut.equals(null));
}
并继续下一个条件,直到覆盖代码中的所有分支。
您可以从方法中获取sut
并将其作为成员变量存储在测试类中。
答案 1 :(得分:0)
我不确定您要尝试使用哪种方法。我从您的问题中了解到的是:您试图掩盖人的平等代码。
所以为了覆盖那个 1)具有当前对象的名称属性,此属性称为null 2)将当前对象的name属性设置为非null,以覆盖代码的等号部分。
要了解更多信息,请学习三元(?:)运算符的工作原理。
我希望这个答案会有所帮助。
答案 2 :(得分:0)
等值项可能具有0%的覆盖率,因为您可能未包含带有生成的批注为true的lombok.config文件。 设置
config.stopBubbling = true;
lombok.addLombokGeneratedAnnotation = true
在lombok.config文件中