Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java junit如何测试这个等式的最后一个块?_Java_Eclipse_Spring Boot_Junit4 - Fatal编程技术网

Java 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

JUnit如何测试这个等式的最后一个块

任何帮助都将不胜感激。这就是所讨论的方法:

@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声明?您不能直接进入测试并找出答案吗?