Тестирование на Kotlin
Тестирование на Kotlin
На JVM для Kotlin используют JUnit 5 (совместим с Java) и Kotest (идиоматичный Kotlin). Для моков — MockK (удобнее Mockito для final и корутин).
См. также JUnit в Java.
JUnit 5 + MockK
build.gradle.kts:
dependencies {
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
testImplementation("io.mockk:mockk:1.13.11")
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.1")
}
import io.mockk.*
import kotlinx.coroutines.test.runTest
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
interface UserRepo {
suspend fun findName(id: Int): String
}
class UserService(private val repo: UserRepo) {
suspend fun greet(id: Int) = "Hello, ${repo.findName(id)}!"
}
class UserServiceTest {
private val repo = mockk<UserRepo>()
private val service = UserService(repo)
@Test
fun greet() = runTest {
coEvery { repo.findName(1) } returns "Ann"
assertEquals("Hello, Ann!", service.greet(1))
coVerify { repo.findName(1) }
}
}
coEvery / coVerify — для suspend-функций.
./gradlew test
Kotest (кратко)
import io.kotest.core.spec.style.FunSpec
import io.kotest.matchers.shouldBe
class CalculatorSpec : FunSpec({
test("add") {
Calculator().add(2, 3) shouldBe 5
}
})
Стили: DescribeSpec, BehaviorSpec (BDD). Property-based: forAll { a: Int, b: Int -> ... }.
Android
testImplementation— JVM unit-тесты (быстрые);androidTestImplementation— на устройстве/эмуляторе;runTest,TestDispatcherдля корутин.
Ktor
@Test
fun health() = testApplication {
application { module() }
client.get("/health").apply {
status.value shouldBe 200
}
}
Зависимость: ktor-server-test-host.
Связанные материалы
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). История Kotlin - создание языка JetBrains для плавной совместимости с Java и современной разработки. Экосистема Kotlin-приложений - инструменты, фреймворки и мультиплатформенные сценарии разработки. Фундамент для начинающего программиста - что повторить, как работать, чего ожидать. Набор советов, правил, принципов и обычаев в разработке на этом языке. Основы Kotlin - архитектура проекта, платформенные модули и базовые принципы разработки на языке. Типизация, набор правил определения типа данных значений языка. Операторы и выражения в Kotlin - логика вычислений, приоритеты операций и идиоматичный стиль записи условий. Циклы и управляющие конструкции в Kotlin - идиоматичные способы итерации, условия и управление выполнением. ООП в Kotlin - классы, модификаторы доступа, наследование и идиоматичное проектирование объектных структур. Кавычки, точки, запятые, скобки и прочие знаки препинания. Kotlin использует набор зарезервированных слов для построения синтаксических конструкций языка. Все ключевые слова разделены на категории по назначению. Набор функций, которые включены в стандартную библиотеку языка.История языка Kotlin
Экосистема Kotlin-приложений
Что требуется знать перед началом изучения языка программирования Kotlin
Рекомендации по разработке на Kotlin
Основы языка Kotlin
Типы данных и объявление переменных
Операторы и выражения в Kotlin
Циклы и управляющие конструкции
Объектно-ориентированное программирование в Kotlin
Синтаксис и пунктуация в Kotlin
Ключевые слова языка Kotlin
Встроенные функции и расширения Kotlin