Ответ 1
Как насчет:
assertTrue("User should be logged in", user.isLoggedIn());
Работает в обоих направлениях.
Должен ли я писать assertTrue("User logged in", user.isLoggedIn());
или assertTrue("User is not logged in", user.isLoggedIn());
Первая обеспечивает лучшее чтение внутри исходных файлов:
" Я утверждаю, что верно следующее: пользователь вошел в систему."
Сообщение об ошибке можно прочитать в обоих направлениях: java.lang.AssertionError: User logged in
" Существует ошибка в утверждении, что пользователь зарегистрирован в"
" Ошибка в том, что пользователь вошел в систему."
Документация JUnit не содержит четкого руководства, которое должно быть, за исключением того, что это
" идентификационное сообщение для {@link AssertionError} ",
И в обоих случаях текст идентифицирует выполняемый тест.
Какое общее использование?
Как насчет:
assertTrue("User should be logged in", user.isLoggedIn());
Работает в обоих направлениях.
Используйте положительный текст подтверждения, как в первом примере, или как:
assertTrue("User is logged in", user.isLoggedIn());
Причины:
Попытка обеспечить "всю контекстуальную информацию" в сообщении assert не улучшает ситуацию, скорее создает беспорядок информации.
Знаете, хорошие программисты отлаживают код и предоставляют рабочий и более короткий код.
Возьмите с помощью положительных утверждений, как первое, что нужно сделать в этом направлении.
Другое направление - исправление кода все более ненужным материалом - это путь к адскому программированию.
Хорошо, вы могли бы также изложить ваше предположение, а затем как предположение не выполнялось. Например:
assertTrue("Expected user to be logged it, and wasn't", user.isLoggedIn());
Делает более четкие сообщения, но дольше вводится и читается.
Чтобы избежать этого вопроса, я все чаще склоняюсь к использованию assertThat
вместо методов "low-level" assert *. Действительно, как эта статья объясняет, assertThat даст вам очень четкое сообщение об ошибке в случае сбоя.
Вы можете использовать:
assertTrue("Test if user is logged in", user.isLoggedIn());
Когда вы это сделаете, вы проверяете, что user.isLoggedIn()
является истинным, вы не можете сказать, что пользователь вошел в систему или нет, вы еще не знаете, вы просто проверяете его.
Интересно, я бы использовал:
assertTrue("user should be logged in", user.isLoggedIn());
который говорит мне, что ожидается состояние этого утверждения.
Я думаю, что лучший выбор - тот, который вы понимаете.
Вы должны включить оба случая. У вас есть лучший тестовый пример, когда вы триангулируете свои утверждения.