утверждение против утверждений JUnit



сегодня я видел тестовый случай JUnit с утверждением java вместо утверждений JUnit-есть ли значительные преимущества или недостатки, чтобы предпочесть один над другим?

606   6  

6 ответов:

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

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

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

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

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

когда тест терпит неудачу, вы получаете больше информации.

assertEquals(1, 2); результаты java.lang.AssertionError: expected:<1> but was:<2>

vs

assert(1 == 2); результаты java.lang.AssertionError

вы можете получить еще больше информации, если вы добавите аргумент сообщение assertEquals

Я бы сказал, что используйте JUnit asserts в тестовых случаях и используйте утверждение java в коде. Другими словами, реальный код никогда не должен иметь зависимостей JUnit, как очевидно, и если это тест, он должен использовать его вариации JUnit, а не assert.

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

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

Comments

    Ничего не найдено.