Spec-Zone.ru › Kotlin 2

Тестирование проектов Kotlin с помощью Maven

Kotlin легко интегрируется в экосистему Maven, позволяя использовать стандартные отраслевые инструменты для проверки серверных приложений. В этом руководстве вы узнаете, как создавать тесты с помощью JUnit и использовать плагины Maven для запуска модульных и интеграционных тестов.

Подробное руководство по настройке проекта Maven для совместного использования Kotlin и Java см. в разделе Настройка проекта.

Создание тестов с помощью JUnit

JUnit — стандартный фреймворк для тестирования серверных приложений на Kotlin. Хотя Kotlin поддерживает несколько версий JUnit, в большинстве современных проектов следует использовать JUnit 6.

Чтобы создать тест на Kotlin с помощью JUnit, используйте аннотацию @Test из пакета kotlin.test или JUnit.

Добавление зависимости

Библиотека kotlin-test — самый простой способ начать работу. Она предоставляет общий набор проверок и автоматически подключает необходимые артефакты JUnit.

JUnit 5 и более поздние версии

Для всех новых проектов используйте артефакт kotlin-test-junit5. Он обеспечивает полную поддержку JUnit, включая такие возможности, как вложенные тесты и параллельное выполнение. Kotlin/JVM поддерживает последнюю стабильную версию JUnit — JUnit 6.

Обновите файл pom.xml следующим образом:

<dependencies>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-test-junit5</artifactId>
        <version>2.4.20</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Несмотря на название, kotlin-test-junit5 поддерживает все последние версии JUnit, включая JUnit 6.

JUnit 4

Если вы хотите использовать более раннюю версию JUnit, например, в устаревшем проекте, используйте артефакт kotlin-test-junit, работающий с JUnit 4:

<!-- pom.xml -->
<dependencies>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-test-junit</artifactId>
        <version>2.4.20</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Подробное руководство по использованию JUnit для тестирования и пример проекта см. в руководстве Тестирование кода Java с помощью Kotlin.

Написание модульных тестов

Модульные тесты проверяют изолированные части кода, например отдельные функции или классы. По соглашению, имена модульных тестов имеют суффикс *Test. Например:

import kotlin.test.Test
import kotlin.test.assertEquals

class OrderServiceTest {
    @Test
    fun `calculate total should sum item prices`() {
        val service = OrderService()
        val result = service.calculateTotal(listOf(10.0, 25.0))
        assertEquals(35.0, result)
    }
}

Написание интеграционных тестов

Интеграционные тесты проверяют взаимодействие компонентов, например службы и базы данных. По соглашению, имена интеграционных тестов имеют суффикс *IT. Например:

import kotlin.test.Test
import kotlin.test.assertNotNull

class UserRepositoryIT {
    @Test
    fun saveFindUser() {
        // Example integration with a database or service
        val repository = UserRepository()
        repository.save(User("KotlinUser"))
        
        val user = repository.findByName("KotlinUser")
        assertNotNull(user)
    }
}

Запуск тестов

В проектах Maven выполнение тестов обычно разделено между двумя плагинами — Surefire и Failsafe, что обеспечивает четкий жизненный цикл сборки.

С помощью плагина Surefire

Плагин Surefire отвечает за модульные тесты. Он запускает все тесты Kotlin и Java, соответствующие шаблону именования *Test.

По умолчанию он выполняется на этапе test жизненного цикла сборки и сразу завершает сборку с ошибкой, если какой-либо тест не пройден.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.5.5</version>
</plugin>

Чтобы запустить только модульные тесты, используйте следующую команду:

mvn test

С помощью плагина Failsafe

Плагин Failsafe отвечает за интеграционные тесты. Он запускает все тесты Kotlin и Java, соответствующие шаблону именования *IT.

В отличие от Surefire, Failsafe позволяет сборке продолжаться, даже если тест завершается с ошибкой на этапе integration-test, благодаря чему могут выполниться задачи этапа post-integration-test (например, остановка контейнера Docker). Если обнаружены ошибки в тестах, сборка завершается с ошибкой на этапе verify.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>3.5.5</version>
    <executions>
        <execution>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Чтобы запустить модульные и интеграционные тесты, используйте следующую команду:

mvn verify

Подробные сообщения об ошибках

Плагин компилятора Power-assert для Kotlin формирует подробные сообщения об ошибках, показывающие промежуточные значения в проверках. Благодаря этому в выводе консоли отображаются полные диаграммы.

  1. Чтобы включить Power-assert, добавьте следующую конфигурацию в файл pom.xml проекта:

    <properties> <kotlin.version>2.4.20</kotlin.version> <kotlin.compiler.jdkRelease>17</kotlin.compiler.jdkRelease> </properties> <dependencies> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-test-junit5</artifactId> <version>${kotlin.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <version>${kotlin.version}</version> <extensions>true</extensions> <executions> <execution> <id>compile</id> <phase>process-sources</phase> <goals> <goal>compile</goal> </goals> </execution> <execution> <id>test-compile</id> <phase>process-test-sources</phase> <goals> <goal>test-compile</goal> </goals> </execution> </executions> <configuration> <!-- Specify the Power-assert plugin --> <compilerPlugins> <plugin>power-assert</plugin> </compilerPlugins> <!-- Specify the functions to transform --> <pluginOptions> <option>power-assert:function=kotlin.test.assertEquals</option> <option>power-assert:function=kotlin.test.assertTrue</option> </pluginOptions> </configuration> <!-- Add the Power-assert plugin dependency --> <dependencies> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-power-assert</artifactId> <version>${kotlin.version}</version> </dependency> </dependencies> </plugin> </plugins> </build>
    • В разделе <properties> укажите версию Kotlin и целевую версию JDK, например JDK 17.

    • В разделе <dependencies> добавьте kotlin-test-junit5 для запуска тестов.

    • В разделе <build><plugins> настройте kotlin-maven-plugin с помощью плагина компилятора power-assert. Перечислите функции проверки, которые нужно преобразовать, в разделе <pluginOptions> и добавьте зависимость плагина Power-assert.

  2. Создайте файл теста UserProfileBackendTest.kt в каталоге src/test/kotlin:

    import kotlin.test.Test
    import kotlin.test.assertEquals
    
    class UserProfileBackendTest {
    
        data class UserProfile(val id: Long, val email: String)
    
        @Test
        fun `verify backend entity mapping matches`() {
            // Define expected object state
            val expectedRecord = UserProfile(id = 451L, email = "admin-dev@company.internal")
    
            // Simulate a mismatched backend response 
            val actualRecord = UserProfile(id = 451L, email = "admin-prod@company.com")
    
            // Use a standard kotlin.test assertion
            assertEquals(expectedRecord, actualRecord, "Profile configurations out of sync")
        }
    }
    
  3. Запустите тест и проверьте вывод:

    mvn test
    

В консоли отображается полная диаграмма Power-assert, показывающая разницу между ожидаемыми и фактическими значениями в каждой точке выражения:

Profile configurations out of sync
assertEquals(expectedRecord, actualRecord, "Profile configurations out of sync")
             |               |
             |               UserProfile(id=451, email=admin-prod@company.com)
             UserProfile(id=451, email=admin-dev@company.internal)

Другие фреймворки для тестирования

Помимо JUnit, вы можете использовать другие популярные фреймворки, чтобы сделать тесты на Kotlin более идиоматичными и удобочитаемыми:

Библиотека

Описание

AssertJ

Библиотека проверок с гибким API и возможностью объединять проверки в цепочки.

Mockito-Kotlin

Обертка Mockito для Kotlin с вспомогательными функциями и улучшенной интеграцией с системой типов Kotlin.

MockK

Нативная библиотека для создания моков в Kotlin, поддерживающая специфичные для Kotlin возможности, включая сопрограммы и функции-расширения.

Kotest

Библиотека проверок для Kotlin с несколькими стилями утверждений и широкими возможностями сопоставления.

Strikt

Библиотека проверок для Kotlin с типобезопасными утверждениями и поддержкой классов данных.

Что дальше

  • Изучите возможности библиотеки kotlin.test.

  • Подробнее узнайте о плагине компилятора Power-assert.

24 июля 2026 г.
Тестирование кода Java с помощью Kotlin и JUnit — руководствоИспользование процессоров аннотаций в проектах Kotlin

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/jvm-test-maven.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API