Проверки
Проверяйте поведение
«Проверки» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.
Что такое проверка?
Проверка убеждается, что фактическое значение совпадает с ожидаемым. Если проверка не проходит, тест завершается с ошибкой и полезным сообщением.
JUnit5 предоставляет проверки в org.junit.jupiter.api.Assertions.
assertEquals
Самая распространённая проверка. Обратите внимание на порядок: сначала ожидаемое значение, затем фактическое.
import org.junit.jupiter.api.Assertions.assertEquals
fun main() {
val sum = 2 + 3
assertEquals(5, sum)
println("passed")
}assertTrue и assertFalse
Проверяйте логические условия напрямую.
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Assertions.assertFalse
fun main() {
assertTrue(10 > 5)
assertFalse("".isNotEmpty())
println("ok")
}Проверки на null
Используйте assertNull и assertNotNull, чтобы проверять допустимость значения null. Во многих случаях assertNotNull также выполняет интеллектуальное приведение типа.
import org.junit.jupiter.api.Assertions.assertNotNull
import org.junit.jupiter.api.Assertions.assertNull
fun main() {
val name: String? = "Ada"
assertNotNull(name)
assertNull(null)
println("done")
}Проверка исключений
assertThrows проверяет, что блок кода выбрасывает определённое исключение. Функция возвращает исключение, поэтому вы можете изучить его сообщение.
import org.junit.jupiter.api.Assertions.assertThrows
import org.junit.jupiter.api.Assertions.assertEquals
fun main() {
val ex = assertThrows(IllegalArgumentException::class.java) {
require(false) { "bad input" }
}
assertEquals("bad input", ex.message)
println("caught")
}Сгруппированные проверки
assertAll выполняет несколько проверок и сообщает обо всех ошибках вместе, не останавливаясь на первой.
import org.junit.jupiter.api.Assertions.assertAll
import org.junit.jupiter.api.Assertions.assertEquals
fun main() {
assertAll(
{ assertEquals(2, 1 + 1) },
{ assertEquals(4, 2 + 2) }
)
println("all passed")
}Сообщения об ошибках
Передайте сообщение (или ленивую лямбду сообщения), чтобы причины ошибок были понятны без дополнительных пояснений.
import org.junit.jupiter.api.Assertions.assertEquals
fun main() {
val balance = 100
assertEquals(100, balance, "balance should be unchanged")
println("ok")
}Сравнение коллекций
assertEquals подходит для списков, если их порядок и содержимое совпадают. Используйте assertIterableEquals для итерируемых объектов разных конкретных типов.
import org.junit.jupiter.api.Assertions.assertEquals
fun main() {
val expected = listOf(1, 2, 3)
val actual = (1..3).toList()
assertEquals(expected, actual)
println("lists equal")
}Выразительные проверки с AssertK
Библиотеки вроде AssertK предлагают понятный стиль assertThat(x).isEqualTo(y), популярный в проектах на Kotlin.
// assertThat(result).isEqualTo(5)
// assertThat(list).contains("a", "b")
// assertThat(name).isNotNull()fail()
Вызовите fail, чтобы принудительно завершить проверку с ошибкой. Это полезно для обозначения недостижимых ветвей или незавершённых тестов.
import org.junit.jupiter.api.Assertions.fail
fun process(x: Int): String = when {
x > 0 -> "positive"
else -> fail("unexpected value")
}Выбор подходящей проверки
Выбирайте наиболее конкретную проверку, чтобы ошибки было проще понять:
- Равенство →
assertEquals - Условия →
assertTrue/assertFalse - Ошибки →
assertThrows - Несколько проверок →
assertAll
Быстрая проверка
Вы хотите, чтобы тест сразу сообщал обо всех неудачных проверках, а не останавливался на первой. Что следует использовать?
Повторение
Теперь вы знаете проверки JUnit5:
assertEquals(сначала ожидаемое значение),assertTrue/assertFalseassertNull/assertNotNull,assertThrowsassertAllдля группировки проверок- Добавляйте сообщения для ясности
Далее: имитация зависимостей с помощью MockK.
Часто задаваемые вопросы
Урок «Проверки» бесплатный?
Да — полный текст урока «Проверки» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.
Чему я научусь в уроке «Проверки»?
Проверяйте поведение Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kotlin Academy?
Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Проверки»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kotlin Academy?
Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.