утверждайте по сравнению с Утверждениями JUnit

Сегодня я видел, что тестовый сценарий JUnit с утверждением Java вместо утверждений JUnit — Является там значительными преимуществами или недостатками для предпочтения один по другому?

74
задан Muhd 11 May 2017 в 08:15
поделиться

4 ответа

В JUnit4 исключение (фактически ошибка), созданное утверждением JUnit, такое же, как ошибка, вызванная ключевым словом java assert (AssertionError), поэтому она точно такая же, как assertTrue , и кроме трассировки стека вы не заметите разницы.

При этом утверждения должны запускаться со специальным флагом в JVM, из-за чего многие тесты кажутся пройденными только потому, что кто-то забыл настроить систему с этим флагом при запуске тестов JUnit - нехорошо.

В общем, из-за этого я бы сказал, что использование JUnit assertTrue является лучшей практикой, поскольку он гарантирует выполнение теста, гарантирует согласованность (иногда вы используете assertThat или другие утверждения, которые не являются ключевым словом java), и если поведение утверждений JUnit должно измениться в будущем (например, подключиться к какому-либо фильтру или другой будущей функции JUnit), ваш код сможет использовать это.

Настоящая цель ключевого слова assert в java - иметь возможность отключить его без штрафных санкций во время выполнения. Это не относится к модульным тестам.

90
ответ дан 24 November 2019 в 11:58
поделиться

Это может быть неприменимо, если вы используете только блестящие и новые вещи, но assert не был введен в Java до версии 1.4SE. Поэтому, если вам приходится работать в среде со старыми технологиями, вы можете склониться к JUnit по причинам совместимости.

0
ответ дан 24 November 2019 в 11:58
поделиться

Я бы сказал, что если вы используете JUnit, вам следует использовать утверждения JUnit. assertTrue () в основном то же самое, что assert , иначе зачем вообще использовать JUnit?

0
ответ дан 24 November 2019 в 11:58
поделиться

Я предпочитаю утверждения JUnit, поскольку они предлагают более богатый API, чем встроенный assert оператор и, что более важно, не требуют явного включения в отличие от assert, который требует -ea аргумента JVM.

26
ответ дан 24 November 2019 в 11:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: