Java junit如何测试这个等式的最后一个块?
JUnit如何测试这个等式的最后一个块 任何帮助都将不胜感激。这就是所讨论的方法:Java junit如何测试这个等式的最后一个块?,java,eclipse,spring-boot,junit4,Java,Eclipse,Spring Boot,Junit4,JUnit如何测试这个等式的最后一个块 任何帮助都将不胜感激。这就是所讨论的方法: @Override public boolean equals(java.lang.Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } //unreachable block S
@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));
}
您的问题可能是以下情况之一,在这种情况下,该方法将过早返回。 如果serviceOrderRelationship和serviceOrderRelationship1是对同一对象的引用,则返回true。类似地,如果它们不是同一类型,将返回false。如果serviceOrderRelationship1为null,则将返回false。
如果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));
你的问题到底是什么?你的第二个断言失败了吗?如果是,单元测试用例将在第一个断言错误时终止断言没有失败,但我的测试没有覆盖/达到我提到的块。这取决于你如何创建要测试的对象,需要更多的代码,我想如果这个==o{return true;}您是否可以添加serviceOrderRelationship1声明和serviceOrderRelationship1声明?您不能直接进入测试并找出答案吗?