Compose 预览版屏幕截图测试版本说明

0.0.1-alpha15

此版本包含以下 bug 修复:

问题 说明
问题 500417360 修复了以下问题:在 Kotlin 2.1 及更高版本中运行预览版时,由于 Layoutlib 框架的隔离类加载器中缺少 kotlin-stdlib 依赖项,导致初始化崩溃 (NoClassDefFoundError)。
问题 384188032 修复了在可组合项 AndroidView 工厂内膨胀 ViewHolder 对象时发生的渲染崩溃。
问题 351302272 修复了预览中可绘制资源加载失败的问题,其中资源位于同级或依赖的项目模块中。
问题 482664893 确保在屏幕截图测试抛出异常时,验证任务会正确失败,而不是使用过时的屏幕截图错误地成功。
问题 497675618 支持通过 JVM 覆盖率代理(例如 JaCoCo)对可组合类进行插桩。
问题 498545960 从 JUnit 控制台错误堆栈轨迹中剥离了内部文件名(例如 ImageVerifier.kt),以使调试输出更清晰。
问题 385613865 移除了测试结果 XML 文件中图片的绝对路径用法,并将其替换为相对路径。
问题 513276596 确保渲染失败会正确地使屏幕截图测试任务失败,而不是以空白屏幕截图静默通过。
问题 340639802 解决了预览方法解析冲突,即测试错误地与主来源集中的完全限定方法名称匹配。

0.0.1-alpha14

此版本包含以下 bug 修复和性能改进:

问题 说明
问题 469819154 修复了 Compose 渲染器中的内存泄漏问题。
问题 470058578 修复了更新参考图片时出现的界面冻结和内存错误。
问题 422412664 修复了 Windows 和 GitHub Actions 上的“命令行超出操作系统限制”错误。
问题 437223807 修复了多模块项目中的资源和资产解析问题。
问题 464899800 修复了 version.properties 中因命名冲突而导致的 Gradle 插件冲突。
问题 482433854 修复了使用 kotlin-reflect 或序列化的可组合项的初始化错误。

0.0.1-alpha13

此版本引入了以下功能:

  • 可与 JDK 17 或更高版本兼容。
  • 修复了多项 bug,并改进了与 Android Studio 的集成。

0.0.1-alpha12

此版本引入了以下功能:

  • 与 Android Gradle 插件 (AGP) 9.0 的兼容性。
  • 支持在 JDK 24 及更高版本上运行屏幕截图测试。
  • 支持配置最大堆大小。
  • 修复了渲染失败问题,并提高了测试稳定性。
  • 增强了报告功能,可显示与新图片和参考图片相关的百分比差异和其他元数据。

0.0.1-alpha11

此版本引入了以下功能:

  • 与 Android Gradle 插件 (AGP) 8.13 的兼容性。
  • 添加了对解析具有十进制值的 XML 可绘制对象的支持,无论主机语言区域如何。
  • 对于使用 JDK 24 或更高版本的宿主机,系统会选择兼容的 JDK (11-23),前提是已安装了此类 JDK。

0.0.1-alpha10

此版本引入了以下功能:

  • 从该版本开始,您需要使用 @PreviewTest 注解标记所有预览函数。没有注释的预览不会执行。

  • 参考图片目录已从 {module}/src/{variant}/screenshotTest/reference 更改为 {module}/src/screenshotTest{Variant}/reference。这是为了确保生成的参考图片不会成为正式版代码的一部分,并与其他测试类型的目录结构保持一致。

  • {variant}PreviewScreenshotRender 任务会被移除。图片渲染已迁移到 JUnit 测试引擎中。

  • update{Variant}ScreenshotTest 任务将在更新之前将新的渲染图片与参考图片进行比较。它只会更新差异大于指定阈值的图片。移除了 --updateFilter 命令行标志。

0.0.1-alpha06

此版本引入了以下功能:

图片差异阈值:借助这项新的全局阈值设置,您可以更精细地控制屏幕截图比较。如需进行配置,请更新模块的 build.gradle.kts:

    testOptions {
        screenshotTests {
            imageDifferenceThreshold = 0.0001f // 0.01%
        }
    }

此阈值将应用于模块中定义的所有屏幕截图测试。

  • 问题修复:修复了一些 Compose 渲染器 bug,并添加了对空 Compose 的支持。
  • 性能增强:更新了图片差异比较算法,使其速度更快。