首页 > 解决方案 > 等于实现测试覆盖率junit java

问题描述

我在 junit 中测试了这个等于实现中的第一对 if 检查,但我不知道如何通过第二个 if 检查到最终返回检查。有人可以帮我解决这个问题:) 我将发布我的两个断言,让我通过第一对 if 检查。(Laila 是我的狗,代码中是 Pet 对象 :))。

-- 测试代码:

  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    Pet pet = (Pet) o;
    return Objects.equals(this.id, pet.id) &&
        Objects.equals(this.category, pet.category) &&
        Objects.equals(this.name, pet.name) &&
        Objects.equals(this.photoUrls, pet.photoUrls) &&
        Objects.equals(this.tags, pet.tags) &&
        Objects.equals(this.status, pet.status);
  }

这些是我的断言,可以让我通过前两个 if 检查:

        assertTrue(laila.equals(laila));
        assertFalse(laila.equals(null));

标签: javainheritancejunitequals

解决方案


您需要与另一个Pet不是相同引用的对象进行比较或null.

assertFalse(laila.equals(new Pet(/* instantiate different pet */)));

推荐阅读