assertEquals против assertTrue для логического - PullRequest
1 голос
/ 13 февраля 2020

Вы можете проверить объекты assertEquals(a,b) и assertTrue(a.equals(b)) или assertTrue(a==b) (для примитивов). В этом случае, конечно, assertEquals(a,b) является единственным возможным вариантом. Это нулевая безопасность и более информативная в случае ошибки теста (вы получаете точную ошибку, не истинную или ложную).

У меня следующий вопрос.

Как насчет ситуации, когда мы имеем только логическое значение проверить?

assertEquals(true, a) и assertTrue(a)

Какая разница?

Я вижу случай, когда мы проверяем Boolean. Использование assertTrue (a) небезопасно. И это очень важная причина. В случае логического значения не вижу разницы.

1 Ответ

2 голосов
/ 13 февраля 2020

assertEquals(a, b) и assertTrue(a.equals(b)) - не одно и то же, так как первый вернет true, если оба будут нулевыми, а последний сгенерирует исключение нулевого указателя.

Идиоматический c способ записи assertTrue(a == b) равно assertSame(a, b), если a и b являются ссылками. Для примитивов используйте assertEquals.

assertEquals(true, a) и assertTrue(a) семантически идентичны. Это просто вопрос стиля. Многие считают плохой стиль, такой же, как и этот.

if (isActive() == true) {
    doThing()
}
...