Kotest Assertions и Matchers

В Kotest существует обширная библиотека Assertions and Matchers. Рассмотрим ее подробнее.

Прежде всего, следует упомянуть зависимость testImplementation "io.kotest:kotest-assertions-core:$kotestVersion", предоставляющую набор Matcher-ов, а также SoftAssertion и Assertion для проверки исключений. Кроме того, существует возможность по расширению и добавлению собственных комплексных Matcher-ов, включая использование уже готовых расширений.

Итак, приведем пример теста:

Теперь немного расширим его, добавив больше проверок:

Что важно отметить:

  1. assertSoftly { code }. Soft Assert из соответствующей библиотеки assertions Kotest служит для выполнения блока кода полностью, плюс произойдет формирование сообщения со всеми существующими ошибками.
  2. response.asClue { }. Важнейший момент для проверок в тестах. Здесь Scope-функция kotlin asClue добавит в сообщение в случае появления ошибки строковое представление всего response-объекта.
  3. Matchers. Matcher'ы от Kotest — прекрасная библиотека проверок, успешно покрывающая базовые потребности. Причем shouldBe — это infix-версия проверки на равенство, а shouldBeBlank — не infix-проверка на пустоту строки (нет аргумента).
  4. assertThrows<AssertionError>. Это уже статическая функция расширенной для Kotlin библиотеки Junit5 inline fun <reified T : Throwable> assertThrows(noinline executable: () -> Unit), благодаря чему выполняется блок и проверяется тип ожидаемого исключения с его возвратом для последующей проверки.

Источник: https://habr.com/ru/users/kochetkov-ma/.