Сегодня я видел, что тестовый сценарий JUnit с утверждением Java вместо утверждений JUnit — Является там значительными преимуществами или недостатками для предпочтения один по другому?
В JUnit4 исключение (фактически ошибка), созданное утверждением JUnit, такое же, как ошибка, вызванная ключевым словом java assert
(AssertionError), поэтому она точно такая же, как assertTrue
, и кроме трассировки стека вы не заметите разницы.
При этом утверждения должны запускаться со специальным флагом в JVM, из-за чего многие тесты кажутся пройденными только потому, что кто-то забыл настроить систему с этим флагом при запуске тестов JUnit - нехорошо.
В общем, из-за этого я бы сказал, что использование JUnit assertTrue
является лучшей практикой, поскольку он гарантирует выполнение теста, гарантирует согласованность (иногда вы используете assertThat
или другие утверждения, которые не являются ключевым словом java), и если поведение утверждений JUnit должно измениться в будущем (например, подключиться к какому-либо фильтру или другой будущей функции JUnit), ваш код сможет использовать это.
Настоящая цель ключевого слова assert в java - иметь возможность отключить его без штрафных санкций во время выполнения. Это не относится к модульным тестам.
Это может быть неприменимо, если вы используете только блестящие и новые вещи, но assert не был введен в Java до версии 1.4SE. Поэтому, если вам приходится работать в среде со старыми технологиями, вы можете склониться к JUnit по причинам совместимости.
Я бы сказал, что если вы используете JUnit, вам следует использовать утверждения JUnit. assertTrue ()
в основном то же самое, что assert
, иначе зачем вообще использовать JUnit?
Я предпочитаю утверждения JUnit, поскольку они предлагают более богатый API, чем встроенный assert
оператор и, что более важно, не требуют явного включения в отличие от assert
, который требует -ea
аргумента JVM.