Некоторая информация, которую вы упустили, - это то, к какому классу относится объект «s1» и к какому классу принадлежит этот метод equals. Разумно предположить, что «s1» имеет тот же тип, что и класс вашего метода «equals» определяется в.
Согласно этому предположению, рассматриваемая строка (преобразованная в более простую версию, указанную @howlger):
assertTrue(s1.getClass().equals(s1.getClass()));
Даже не выполняет ваш метод «равно». Это потому, что вы вызываете «s1.getClass (). Equals (...)» вместо «s1.equals (...)».
Утверждение, которое фактически проверяет ваш код, будет примерно так:
assertTrue(s1.equals(s1));
Чтобы ответить на ваш вопрос о покрытии, очевидно, что это само по себе не даст вам полного покрытия в методе. Он будет соответствовать первому «if» и вернет истину.
Утверждения, которые должны приблизить вас к полному охвату, будут включать следующие:
// s1 and s2 are different instances of the same class, with identical contents
assertTrue(s1.equals(s2));
// s1 and s2 are different instances of the same class, with different contents
assertFalse(s1.equals(s2));
// s1 and s2 are different instances of different classes
assertFalse(s1.equals(s2));
Кроме того, полезно отметить, что вы можете запустите свой тест в отладчике с точками останова в методе «равно», чтобы точно проверить, какой путь принимает код.