... > Kotlin > Unit-тестирование в Kotlin

Unit-тестирование в Kotlin

НАВИГАЦИЯ ПО СТРАНИЦЕ

Зависимости Написание Unit-тестов Запуск тестов Использование assert Mocking и Dependency Injection

Unit-тестирование в Kotlin обеспечивает проверку отдельных компонентов (или "юнитов") кода на корректность выполнения своих функций. Давайте рассмотрим основы написания unit-тестов в Kotlin с использованием библиотеки JUnit.

1. Зависимости

Добавьте зависимость JUnit в файл build.gradle:

dependencies {
    testImplementation 'junit:junit:4.13.2'
}

2. Написание Unit-тестов

Создайте тестовый класс, который содержит методы, проверяющие функциональность кода.

import org.junit.Test
import kotlin.test.assertEquals

class CalculatorTest {

    @Test
    fun testAddition() {
        val result = add(3, 5)
        assertEquals(8, result)
    }

    @Test
    fun testSubtraction() {
        val result = subtract(8, 3)
        assertEquals(5, result)
    }

    // Другие тестовые методы...

    private fun add(a: Int, b: Int): Int {
        return a + b
    }

    private fun subtract(a: Int, b: Int): Int {
        return a - b
    }
}

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

Вы можете запустить тесты из командной строки или используя интегрированную среду разработки (IDE), такую как IntelliJ IDEA или Android Studio.

Для выполнения тестов из командной строки:

./gradlew test

4. Использование assert

JUnit предоставляет множество методов assert, которые можно использовать для проверки ожидаемых результатов. В приведенном выше примере использован assertEquals.

import org.junit.Test
import kotlin.test.assertTrue
import kotlin.test.assertFalse

class ExampleTest {

    @Test
    fun testString() {
        val str = "Kotlin"
        assertEquals("Kotlin", str)
        assertTrue(str.startsWith("K"))
        assertFalse(str.endsWith("Java"))
    }

    // Другие тестовые методы...
}

5. Mocking и Dependency Injection

Для тестирования кода, зависящего от внешних ресурсов, таких как базы данных или внешние API, используйте механизмы mock-объектов и внедрение зависимостей.

import org.junit.Test
import org.mockito.Mockito.*

class ExampleServiceTest {

    @Test
    fun testExampleService() {
        // Создание mock-объекта
        val databaseMock = mock(Database::class.java)

        // Внедрение зависимости (dependency injection)
        val service = ExampleService(databaseMock)

        // Задание поведения mock-объекта
        `when`(databaseMock.getData()).thenReturn("Mocked data")

        // Вызов метода объекта, зависящего от базы данных
        val result = service.getDataFromDatabase()

        // Проверка ожидаемого результата
        assertEquals("Mocked data", result)
    }
}

Это лишь примеры базового unit-тестирования в Kotlin с использованием JUnit. Работа с различными библиотеками, такими как MockK, TestNG или Spek, также может быть полезной в зависимости от требований вашего проекта.