截图测试是验证您的 UI 在用户看来如何的有效方法。Compose 预览截图测试工具将 可组合预览 的简洁性和功能与运行主机端截图测试的生产力提升相结合。Compose 预览截图测试旨在与可组合预览一样易于使用。
截图测试是一种自动化测试,它会拍摄 UI 部分的截图,然后将其与之前批准的参考图像进行比较。如果图像不匹配,测试将失败并生成 HTML 报告,以帮助您比较并找到差异。
使用 Compose 预览截图测试工具,您可以
- 识别要用于截图测试的多个现有或新的可组合预览。
- 从这些可组合预览生成参考图像。
- 生成 HTML 报告,以识别在您进行代码更改后对这些预览的更改。
- 使用
@Preview
参数(例如uiMode
或fontScale
)以及多预览来帮助您扩展测试。 - 使用新的
screenshotTest
源集模块化您的测试。
要求
要使用 Compose 预览截图测试,您需要以下内容
- Android Gradle 8.5.0-beta01 或更高版本。
- Kotlin 1.9.20 或更高版本。
设置
要启用该工具,请按照以下步骤操作
- 将
com.android.compose.screenshot
插件(版本0.0.1-alpha01
)添加到您的项目中。 - 将插件添加到您的版本目录文件
[versions] agp = "8.5.0-beta01" kotlin = "1.9.20" ... screenshot = "0.0.1-alpha01" [plugins] ... screenshot = { id = "com.android.compose.screenshot", version.ref = "screenshot"}
- 在您的模块级
build.gradle.kts
文件中,在plugins {}
块中添加插件plugins { ... alias(libs.plugins.screenshot) }
- 在您的项目的
gradle.properties
文件中启用实验性属性。android.experimental.enableScreenshotTest=true
- 在您的模块级
build.gradle.kts
文件的android {}
块中,启用实验性标志以使用screenshotTest
源集,并确保kotlinCompilerExtensionVersion
设置为 1.5.4 或更高版本。android { ... composeOptions { kotlinCompilerExtensionVersion = "1.5.4" } experimentalProperties["android.experimental.enableScreenshotTest"] = true }
- 确保您已添加了
ui-tooling
依赖项。- 将其添加到您的版本目录
[libraries] androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling"}
- 将其添加到您的模块级
build.gradle.kts
文件dependencies { screenshotTestImplementation(libs.androidx.compose.ui.tooling) }
- 将其添加到您的版本目录
指定要用于截图测试的可组合预览
要指定要用于截图测试的可组合预览,请将这些预览放在测试类中。测试类文件必须位于新的 screenshotTest
源集中,例如 app/src/screenshotTest/kotlin/com/google/yourapp/ExamplePreviewScreenshots.kt
({module}/src/screenshotTest/{kotlin|java}/com/your/package
)。
您可以在此文件或在同一源集中创建的其他文件中添加更多可组合项和/或预览,包括多预览。
package com.google.yourapp
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import com.google.yourapp.ui.theme.MyApplicationTheme
class ExamplePreviewsScreenshots {
@Preview(showBackground = true)
@Composable
fun GreetingPreview() {
MyApplicationTheme {
Greeting("Android!")
}
}
}
生成参考图像
设置测试类后,您需要为每个预览生成参考图像。这些参考图像用于在您进行代码更改后识别更改。要为您的可组合预览截图测试生成参考图像,请运行以下 Gradle 任务
- Linux 和 macOS:
./gradlew updateDebugScreenshotTest
(./gradlew {:module:}update{Variant}ScreenshotTest
) - Windows:
gradlew updateDebugScreenshotTest
(gradlew {:module:}update{Variant}ScreenshotTest
)
任务完成后,您可以在 app/src/debug/screenshotTest/reference
({module}/src/{variant}/screenshotTest/reference
) 中找到参考图像。
生成测试报告
参考图像存在后,运行验证任务以拍摄新的截图并将其与参考图像进行比较
- Linux 和 macOS:
./gradlew validateDebugScreenshotTest
(./gradlew {:module:}validate{Variant}ScreenshotTest
) - Windows:
gradlew validateDebugScreenshotTest
(gradlew {:module:}validate{Variant}ScreenshotTest
)
验证任务将在 {module}/build/reports/screenshotTest/preview/{variant}/index.html
中创建一个 HTML 报告。
已知问题
您可以在该工具的 问题跟踪器组件 中找到当前已知问题的列表。通过 问题跟踪器 报告任何其他反馈和问题。