本主题介绍如何在评估每个 Fragment 行为的测试中加入框架提供的 API。
Fragment 在应用中充当可重复使用的容器,使您能够在各种 Activity 和布局配置下呈现相同的界面布局。鉴于 Fragment 的多功能性,请务必验证它们是否提供资源利用率高的一致体验。请注意以下几点:
Fragment 不应依赖于特定的父 Activity 或 Fragment。
不应创建 Fragment 的视图层次结构,除非该 Fragment 对用户可见。
为了帮助设置执行这些测试的条件,AndroidX fragment-testing 库提供了 FragmentScenario 类,用于创建 Fragment 以及更改其 Lifecycle.State。
注意:为了成功运行包含 FragmentScenario 对象的测试,请在测试的插桩线程中运行 API 的每个方法。如需详细了解 Android 测试中使用的不同线程,请参阅了解测试中的线程。
声明依赖项
如需使用 FragmentScenario,请使用 debugImplementation 在应用的 build.gradle 文件中定义 fragment-testing 工件,如以下示例所示:
dependencies {
def fragment_version = "1.3.3"
debugImplementation "androidx.fragment:fragment-testing:$fragment_version"
}
注意:此处使用的是 debugImplementation,以便测试目标进程可以访问 FragmentScenario 所依赖的空 Activity。
本文档中的测试示例使用了 Espresso 和 Truth 库中的断言。如需了解其他可用的测试和断言库,请参阅针对 AndroidX Test 设置项目。
创建 Fragment
FragmentScenario 包含下面几种用于在测试中启动 Fragment 的方法:
launchInContainer(),用于测试 Fragment 的界面。FragmentScenario 会将 Fragment 附加到 Activity 的根视图控制器。包含 Fragment 的这一 Activity 原