借助 Glance 单元测试 API,您可以在不膨胀视图的情况下测试 Glance 代码
还是需要使用 UI Automator例如,借助单元测试 API
条件,例如元素是否在列表中,或者框是否已
并使用 hasContentDescriptionEqualTo
或 isChecked
等匹配器进行检查。
此 API 是轻量级的,需要较少的设置,因此您可以执行由测试驱动 开发微件的各个部分,并将它们进行整理, 改进代码重用
设置
使用单元测试库所需的依赖项显示在 示例:
// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.0'
testImplementation 'androidx.glance:glance-AppWidget-testing:1.1.0'
testImplementation 'org.robolectric:robolectric:4.11.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.
测试结构
在 GlanceAppWidget
类之外整理可组合函数以启用
代码重用和单元测试降低被测单元的复杂性,如下所示:
尽可能多。
class MyGlanceComposableTest {
@Test
fun myNewsItemComposable_largeSize_hasAuthorAsSubtitle() = runGlanceAppWidgetUnitTest {
// Prepare inputs and state
setAppWidgetSize(100.dp, 100.dp)
// Set the composable under test
provideComposable {
MyNewsItemComposable(TEST_NEWS_ITEM)
}
// Perform assertions
onNode(hasTestTag("subTitle"))
.assertHasText(TEST_NEWS_ITEM.authorName)
}
}
设置测试的上下文和大小
如果您的可组合函数使用 LocalContext.current()
读取上下文
方法,必须使用 LocalContext.current()
方法设置上下文。
否则,此步骤是可选的。
您可以使用任何基于 JVM 的 Android 单元测试框架(如 Roboletric), 提供上下文。
如果您的可组合函数访问 LocalSize
,请设置预期尺寸
测试,然后再在测试中提供可组合项。默认大小为
349.dp x 455.dp,相当于 Pixel 4 设备上显示的 5x4 widget
纵向模式
- 如果您的 AppWidget 使用
sizeMode == Single
,您可以将此属性设为 在 widget 的info.xml
文件中找到minWidth
和minHeight
。 - 如果您的 AppWidget 使用
sizeMode == Exact
,您可以标识 测试方式与确定 widget 大小类似, 确定您的 widget 可能会在横向和纵向尺寸的横向和纵向尺寸上显示,并测试 。 - 如果您的 AppWidget 使用
sizeMode == Responsive
,则您可以将此属性设置为以下值之一: 指定sizeMode
时提供的列表中的尺寸。
测试超时的默认时长为 1 秒,但您可以通过自定义
将时长作为参数传递给 runGlanceAppWidgetUnitTest
方法(如果您的测试是这样的)
基础架构会强制执行不同的超时。
有关详情和代码示例,请参阅
runGlanceAppWidgetUnitTest
。