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

如何在Android Studio中适配官方Glance API复现CheckBoxTest.kt?

适配官方Glance API复现CheckBoxTest.kt的方案

1. 对齐官方依赖版本

  • 确保项目build.gradle中使用官方发布的稳定版Glance依赖,不要用源码快照或内部版本。示例配置:
    dependencies {
        implementation "androidx.glance:glance-appwidget:1.0.0"
        androidTestImplementation "androidx.glance:glance-appwidget-testing:1.0.0"
        androidTestImplementation "androidx.test.ext:junit:1.1.5"
        androidTestImplementation "androidx.test.espresso:espresso-core:3.5.1"
    }
    
    版本号可参考官方发布页的最新稳定版。

2. 替换未公开的API调用

源码中的provideGlance是内部方法,官方发布版需改用公开的Content方法构建UI:

class TestCheckBoxWidget : GlanceAppWidget() {
    // 替换源码中的provideGlance方法
    override suspend fun Content() {
        val currentState = currentState<CheckBoxState>()
        Column {
            CheckBox(
                checked = currentState.checked,
                onCheckedChange = { updateState<CheckBoxState> { it.checked = it } },
                text = "Test CheckBox"
            )
        }
    }
}

3. 调整测试类的初始化逻辑

使用官方提供的GlanceAppWidgetTestRule替代源码内部测试工具,简化测试流程:

@RunWith(AndroidJUnit4::class)
class CheckBoxTest {
    @get:Rule
    val testRule = GlanceAppWidgetTestRule(TestCheckBoxWidget())

    @Test
    fun testCheckBoxToggle() {
        // 初始化初始状态
        testRule.setInitialState(CheckBoxState(checked = false))

        // 模拟点击CheckBox
        testRule.onGlance {
            onViewWithText("Test CheckBox").perform(click())
        }

        // 验证状态更新结果
        val updatedState = testRule.getState<CheckBoxState>()
        assertThat(updatedState.checked).isTrue()
    }
}

4. 同步状态类定义

确保状态类继承官方公开的GlanceAppWidgetState:

data class CheckBoxState(val checked: Boolean = false) : GlanceAppWidgetState

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:23:22