如何在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
相关产品推荐
相关产品推荐

