0Pricing
Kotlin Academy · Урок

Проверки

Проверяйте поведение

«Проверки» — бесплатный урок 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/assertFalse
  • assertNull/assertNotNull, assertThrows
  • assertAll для группировки проверок
  • Добавляйте сообщения для ясности

Далее: имитация зависимостей с помощью 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 — локальная установка не требуется.

Все уроки этого курса

  1. Написание тестов с JUnit5
  2. Проверки
  3. Имитация с MockK
  4. Тестирование сопрограмм
← Назад к Kotlin Academy