Тестирование пользовательского интерфейса Compose Multiplatform с помощью JUnit
Compose Multiplatform для настольных компьютеров предоставляет API для тестирования на основе JUnit и API тестирования Jetpack Compose. Подробнее о реализации см. в руководстве Тестирование макета Compose в документации Jetpack Compose.
Чтобы посмотреть, как работают тесты на основе JUnit, начнем с проекта, созданного с помощью мастера Kotlin Multiplatform. Если вы добавляете тесты в существующий проект, возможно, потребуется заменить shared в путях и командах на имя тестируемого модуля.
Создайте исходный набор для тестов и добавьте необходимые зависимости:
Создайте каталог для тестов:
shared/src/desktopTest/kotlin.-
Добавьте следующие зависимости в файл
shared/build.gradle.kts:kotlin { //... sourceSets { //... val desktopTest by getting { dependencies { implementation(compose.desktop.uiTestJUnit4) implementation(compose.desktop.currentOs) } } } } -
Создайте файл теста с именем
ExampleTest.ktи скопируйте в него следующий код:import androidx.compose.material.* import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.test.* import androidx.compose.ui.platform.testTag import androidx.compose.ui.test.junit4.v2.createComposeRule import org.junit.Rule import org.junit.Test class ExampleTest { @get:Rule val rule = createComposeRule() @Test fun myTest(){ // Declares a mock UI to demonstrate API calls // // Replace with your own declarations to test the code in your project rule.setContent { var text by remember { mutableStateOf("Hello") } Text( text = text, modifier = Modifier.testTag("text") ) Button( onClick = { text = "Compose" }, modifier = Modifier.testTag("button") ) { Text("Click me") } } // Tests the declared UI with assertions and actions of the JUnit-based testing API rule.onNodeWithTag("text").assertTextEquals("Hello") rule.onNodeWithTag("button").performClick() rule.onNodeWithTag("text").assertTextEquals("Compose") } } -
Чтобы запустить тест, нажмите значок запуска на поле слева от функции
myTest()или выполните в терминале следующую команду:./gradlew desktopTest
Что дальше?
Узнайте, как создавать и запускать мультиплатформенные тесты.
Общий обзор тестирования на основе JUnit в проекте Kotlin см. в руководстве Тестирование кода с помощью JUnit в JVM.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/multiplatform/compose-desktop-ui-testing.html