Написание тестов с JUnit5
Структурируйте тесты
«Написание тестов с JUnit5» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.
Что такое JUnit5?
JUnit5 (JUnit Jupiter) — стандартная платформа для тестирования JVM и Kotlin. Она предоставляет аннотации для обозначения и структурирования кода тестов.
- Тесты находятся в
src/test/kotlin - Каждый тест является функцией
- Средство запуска выполняет их и сообщает результаты
Добавление зависимости
Добавьте JUnit Jupiter в конфигурацию тестов и включите платформу JUnit.
dependencies {
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
}
tasks.test {
useJUnitPlatform()
}Ваш первый тест
Пометьте функцию аннотацией @Test. Тест проверяет определённое свойство вашего кода.
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.Assertions.assertEquals
class MathTest {
@Test
fun addsTwoNumbers() {
assertEquals(4, 2 + 2)
}
}Понятные имена тестов
Используйте @DisplayName, чтобы получать понятные отчёты о тестах, не придумывая длинные имена функций.
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.DisplayName
class OrderTest {
@Test
@DisplayName("total includes tax")
fun totalWithTax() {
// ...
}
}Настройка с помощью @BeforeEach
@BeforeEach выполняется перед каждым тестом и идеально подходит для создания чистых исходных данных. @AfterEach выполняется после каждого теста для очистки.
import org.junit.jupiter.api.BeforeEach
class CartTest {
private lateinit var cart: MutableList<String>
@BeforeEach
fun setUp() {
cart = mutableListOf()
}
}Настройка на уровне класса
@BeforeAll и @AfterAll выполняются один раз для всего класса. В Kotlin им нужен сопутствующий объект с @JvmStatic (или жизненный цикл на уровне класса).
import org.junit.jupiter.api.BeforeAll
class DbTest {
companion object {
@BeforeAll
@JvmStatic
fun connect() {
// open shared connection
}
}
}Подготовка — действие — проверка
Структурируйте каждый тест в три понятные фазы:
- Подготовка — настройте входные данные и состояние
- Действие — вызовите проверяемый код
- Проверка — проверьте результат
Так тесты остаются понятными и сфокусированными.
Вложенные тесты
@Nested объединяет связанные тесты и создаёт древовидный отчёт, документирующий поведение кода.
import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test
class StackTest {
@Nested
inner class WhenEmpty {
@Test fun isEmpty() { /* ... */ }
}
}Параметризованные тесты
Запускайте один и тот же тест с несколькими входными данными с помощью @ParameterizedTest и источника значений.
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.ValueSource
import org.junit.jupiter.api.Assertions.assertTrue
class NumberTest {
@ParameterizedTest
@ValueSource(ints = [2, 4, 6])
fun isEven(n: Int) {
assertTrue(n % 2 == 0)
}
}Отключение и добавление тегов
Временно пропускайте тест с помощью @Disabled, а также группируйте тесты с помощью @Tag, чтобы включать их в запуски CI или исключать из них.
import org.junit.jupiter.api.Disabled
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test
class FlakyTest {
@Test
@Disabled("fix later")
@Tag("slow")
fun pending() { }
}Самодостаточный пример
Ниже приведены простая функция на чистом Kotlin и идея её тестирования (сам тест выполняется под управлением JUnit).
fun add(a: Int, b: Int): Int = a + b
fun main() {
val result = add(2, 3)
println(if (result == 5) "PASS" else "FAIL")
}Быстрая проверка
Перед каждым отдельным методом теста вам нужен новый пустой список. Какая аннотация подходит?
Повторение
Вы умеете структурировать тесты JUnit5:
@Testобозначает тесты, а@DisplayNameзадаёт им имена@BeforeEach/@BeforeAllвыполняют настройку- Подход «подготовка — действие — проверка» делает тесты понятными
@Nestedи@ParameterizedTestпомогают организовывать тесты и увеличивать их масштаб
Далее: проверки.
Изучай Kotlin с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 51
- Уроки
- 203
Часто задаваемые вопросы
Урок «Написание тестов с JUnit5» бесплатный?
Да — полный текст урока «Написание тестов с JUnit5» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.
Чему я научусь в уроке «Написание тестов с JUnit5»?
Структурируйте тесты Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kotlin Academy?
Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Написание тестов с JUnit5»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kotlin Academy?
Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Написание тестов с JUnit5
- Проверки
- Имитация с MockK
- Тестирование сопрограмм