You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Paparazzi测试Composable截图时遇animator_duration_scale获取失败及空指针问题

Paparazzi Composable截图测试NullPointerException问题解决

问题背景

使用Paparazzi执行Composable组件截图测试时触发NullPointerException,报错提示View measure failed。

报错信息

Nov 25, 2022 10:53:52 AM app.cash.paparazzi.internal.PaparazziLogger logAndroidFramework
INFO: Settings [3]: Can't get key animator_duration_scale from content://settings/global
Nov 25, 2022 10:53:53 AM app.cash.paparazzi.internal.PaparazziLogger error
SEVERE: broken: View measure failed
java.lang.NullPointerException

项目配置与代码

1. 项目级build.gradle classpath

classpath ("app.cash.paparazzi:paparazzi-gradle-plugin:1.1.0")

2. 模块级build.gradle插件

plugins {
   ...
   id("app.cash.paparazzi")
}

3. 测试代码

class PaparazziExampleTest {

    @get:Rule
    var paparazzi = Paparazzi()

    @Test
    fun myComposableTest() {
        paparazzi.snapshot() {
            MyComposable("Hello")
        }
    }
}

4. Composable组件代码

@Composable
fun MyComposable(title: String) {
    Text(
        text = title,
        color = Brown,
        style = MaterialTheme.typography.titleMedium,
        maxLines = 3,
        overflow = TextOverflow.Ellipsis,
    )
}

解决方案

1. 补全MaterialTheme上下文

你的MyComposable直接依赖MaterialTheme.typography,但测试代码中未提供MaterialTheme上下文,导致主题相关对象为空触发空指针。修改测试代码,将Composable包裹在MaterialTheme中:

@Test
fun myComposableTest() {
    paparazzi.snapshot() {
        MaterialTheme {
            MyComposable("Hello")
        }
    }
}

2. 验证颜色资源可用性

Brown如果是自定义颜色资源,需确保测试环境能正确访问。可临时替换为系统内置颜色Color.Brown,或确认颜色资源已在测试源集中配置。

3. 升级Paparazzi版本

1.1.0版本存在Composable测试的兼容性问题,建议升级到2.0.0+的稳定版本,修复了不少空指针和测量失败的已知问题。修改项目级classpath:

classpath ("app.cash.paparazzi:paparazzi-gradle-plugin:2.1.0")

4. 自定义测试主题(可选)

如果需要使用应用自定义主题,可在初始化Paparazzi实例时指定:

@get:Rule
var paparazzi = Paparazzi(
    theme = "Theme.MyApp" // 替换为你的应用主题ID
)

内容的提问来源于stack exchange,提问作者AngelesVP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:40:31