Kotest Assertions и Matchers
В Kotest существует обширная библиотека Assertions and Matchers. Рассмотрим ее подробнее.
Прежде всего, следует упомянуть зависимость testImplementation "io.kotest:kotest-assertions-core:$kotestVersion", предоставляющую набор Matcher-ов, а также SoftAssertion и Assertion для проверки исключений. Кроме того, существует возможность по расширению и добавлению собственных комплексных Matcher-ов, включая использование уже готовых расширений.
Итак, приведем пример теста:
Теперь немного расширим его, добавив больше проверок:
Что важно отметить:
- assertSoftly { code }. Soft Assert из соответствующей библиотеки assertions Kotest служит для выполнения блока кода полностью, плюс произойдет формирование сообщения со всеми существующими ошибками.
- response.asClue { }. Важнейший момент для проверок в тестах. Здесь Scope-функция kotlin asClue добавит в сообщение в случае появления ошибки строковое представление всего response-объекта.
- Matchers. Matcher'ы от Kotest — прекрасная библиотека проверок, успешно покрывающая базовые потребности. Причем shouldBe — это infix-версия проверки на равенство, а shouldBeBlank — не infix-проверка на пустоту строки (нет аргумента).
- assertThrows<AssertionError>. Это уже статическая функция расширенной для Kotlin библиотеки Junit5 inline fun <reified T : Throwable> assertThrows(noinline executable: () -> Unit), благодаря чему выполняется блок и проверяется тип ожидаемого исключения с его возвратом для последующей проверки.
Источник: https://habr.com/ru/users/kochetkov-ma/.