我怎样才能 junit 测试这个 equal 的最后一个块?
How can I junit test the last block of this equal?
JUnit 如何测试这个 equal 的最后一个块?
如有任何帮助,我们将不胜感激。这是有问题的方法:
@Override
public boolean equals(java.lang.Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
//unreachable block
ServiceOrderRelationship serviceOrderRelationship = (ServiceOrderRelationship) o;
return Objects.equals(this.id, serviceOrderRelationship.id) &&
Objects.equals(this.href, serviceOrderRelationship.href) &&
Objects.equals(this.relationshipType, serviceOrderRelationship.relationshipType) &&
Objects.equals(this.baseType, serviceOrderRelationship.baseType) &&
Objects.equals(this.schemaLocation, serviceOrderRelationship.schemaLocation) &&
Objects.equals(this.type, serviceOrderRelationship.type) &&
Objects.equals(this.referredType, serviceOrderRelationship.referredType);
}
这就是我一直在做的,但我永远无法到达 equals 方法中的最后一段代码:
@Test
public void testEquals() throws Exception {
assertFalse(serviceOrderRelationship.equals(null));
assertTrue(serviceOrderRelationship.equals(serviceOrderRelationship));
assertFalse(serviceOrderRelationship.equals(serviceOrderRelationship1));
}
您的问题可能是以下情况之一,在这些情况下,该方法会 return 过早。
如果 serviceOrderRelationship
和 serviceOrderRelationship1
是对同一对象的引用,则 true 将被 returned。同样,如果它们不是同一类型,则 false 将被 returned。如果 serviceOrderRelationship1
为 null,则 false 将被 returned。
如果 serviceOrderRelationship
为 null,则对其调用 equals 将抛出 NullPointerException。
首先感谢大家的回复!
我就是这样到达 equals 方法的最后一个块的。我必须初始化对象 di 和 di1 并将每个变量设置为相同的值,然后测试 equals 条件来回切换一个变量一次到不同的值。这是来自另一个 POJO 的示例:
// Initialize objects
di.setEdgeId("edgeId");
di.setIdentityEndpoint("identityEndpoint");
di.setUsername("username");
di1.setEdgeId("edgeId");
di1.setIdentityEndpoint("identityEndpoint");
di1.setUsername("username");
// Change value of var and test equal
di1.setEdgeId("edgeIdm");
assertFalse(di.equals(di1));
di1.setEdgeId("edgeId");
// same
di1.setIdentityEndpoint("identityEndpointm");
assertFalse(di.equals(di1));
di1.setIdentityEndpoint("identityEndpoint");
// Same
di1.setUsername("usernamem");
assertFalse(di.equals(di1));
di1.setUsername("username");
// Then at the end perform the other tests
assertTrue(di.equals(di));
assertTrue(di.equals(di1));
assertFalse(di.equals(null));
assertFalse(di.equals(42));
JUnit 如何测试这个 equal 的最后一个块?
如有任何帮助,我们将不胜感激。这是有问题的方法:
@Override
public boolean equals(java.lang.Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
//unreachable block
ServiceOrderRelationship serviceOrderRelationship = (ServiceOrderRelationship) o;
return Objects.equals(this.id, serviceOrderRelationship.id) &&
Objects.equals(this.href, serviceOrderRelationship.href) &&
Objects.equals(this.relationshipType, serviceOrderRelationship.relationshipType) &&
Objects.equals(this.baseType, serviceOrderRelationship.baseType) &&
Objects.equals(this.schemaLocation, serviceOrderRelationship.schemaLocation) &&
Objects.equals(this.type, serviceOrderRelationship.type) &&
Objects.equals(this.referredType, serviceOrderRelationship.referredType);
}
这就是我一直在做的,但我永远无法到达 equals 方法中的最后一段代码:
@Test
public void testEquals() throws Exception {
assertFalse(serviceOrderRelationship.equals(null));
assertTrue(serviceOrderRelationship.equals(serviceOrderRelationship));
assertFalse(serviceOrderRelationship.equals(serviceOrderRelationship1));
}
您的问题可能是以下情况之一,在这些情况下,该方法会 return 过早。
如果 serviceOrderRelationship
和 serviceOrderRelationship1
是对同一对象的引用,则 true 将被 returned。同样,如果它们不是同一类型,则 false 将被 returned。如果 serviceOrderRelationship1
为 null,则 false 将被 returned。
如果 serviceOrderRelationship
为 null,则对其调用 equals 将抛出 NullPointerException。
首先感谢大家的回复!
我就是这样到达 equals 方法的最后一个块的。我必须初始化对象 di 和 di1 并将每个变量设置为相同的值,然后测试 equals 条件来回切换一个变量一次到不同的值。这是来自另一个 POJO 的示例:
// Initialize objects
di.setEdgeId("edgeId");
di.setIdentityEndpoint("identityEndpoint");
di.setUsername("username");
di1.setEdgeId("edgeId");
di1.setIdentityEndpoint("identityEndpoint");
di1.setUsername("username");
// Change value of var and test equal
di1.setEdgeId("edgeIdm");
assertFalse(di.equals(di1));
di1.setEdgeId("edgeId");
// same
di1.setIdentityEndpoint("identityEndpointm");
assertFalse(di.equals(di1));
di1.setIdentityEndpoint("identityEndpoint");
// Same
di1.setUsername("usernamem");
assertFalse(di.equals(di1));
di1.setUsername("username");
// Then at the end perform the other tests
assertTrue(di.equals(di));
assertTrue(di.equals(di1));
assertFalse(di.equals(null));
assertFalse(di.equals(42));