Как покрыть метод равных в покрытии кода - PullRequest
0 голосов
/ 20 октября 2018

Новичок в покрытии кода, хотел бы иметь некоторые идеи ...

     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.

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Для проверки этого класса на 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 из метода и сохранить его в тестовом классе как переменную-член.

0 голосов
/ 20 октября 2018

Я не уверен насчет того, каким методом вы пытаетесь покрыться.Из вашего вопроса я понял следующее: вы пытаетесь охватить равный код этого человека.

Итак, чтобы охватить это: 1) присвойте свойству name текущий объект, который обозначен как null 2)Свойство name текущего объекта не равно NULL, чтобы покрыть равную часть кода.

Чтобы узнать больше об этом, узнайте, как работает троичный (? :) оператор.

Надеюсь, этот ответ поможет.

...