Moi*_*han 8 android android-testing android-jetpack androidx androidx-test
最近我展示了一个关于 androidX 测试的谷歌 IO 视频,其中引用了“一次编写,到处运行”。这让我很高兴了解 androidX 测试库。
我发现经过很长时间谷歌为开/关设备的单元测试和仪器测试提出了很好的单一库。但是我发现在开/关设备上运行相同的测试有些困难。
基本上在 Android 中,我们创建了两个源根test/java,androidTest/java分别存储单元测试和仪器测试。单元测试在 JVM 上运行,Instrumentation 在设备/模拟上运行。
然后我为test/java目录中的片段之一编写了测试。
@RunWith(AndroidJUnit4::class)
class MyFragmenTest {
lateinit var scenario: FragmentScenario<MyFragment>
@Before
fun setUp() {
scenario = launchFragmentInContainer<MyFragment>()
}
@Test
fun `sample test`() {
scenario.onFragment {
// something
}
// some assertion
}
}
Run Code Online (Sandbox Code Playgroud)
所以当我使用小的绿色运行图标执行这个测试时,它在没有模拟器的 JVM 中运行这个测试,这很棒。但是要在设备上运行相同的测试,我必须移动此代码androidTest/java源根目录。
基本上我得到了相同的测试可以在任何地方运行,当我们使用 androidX 测试库时,您不必依赖不同的工具和库来完成相同的工作。
我试过的。
之后,在 google 上搜索我发现我们必须sharedTest/java使用下面的 gradle 行创建源根目录,以便它可以在设备上或设备外运行。
android {
...
sourceSets {
androidTest {
java.srcDirs += "src/sharedTest/java"
}
test {
java.srcDirs += "src/sharedTest/java"
}
}
}
Run Code Online (Sandbox Code Playgroud)
将我的代码放入后sharedTest/java,如果我使用绿色运行图标执行测试,它总是要求提供设备。这也令人困惑,因为我永远无法在 JVM 上运行它。
我的问题来了。
如何在不将代码移动到不同的源根目录的情况下无缝地打开/关闭设备执行相同的测试?
Android Plugin for Gradlesrc/test/java/默认编译位于 only 的本地单元测试代码。因此,您需要为共享测试文件夹定义运行配置,如下所述。
就这样,现在点击“应用”和“确定”。然后从运行按钮附近的下拉菜单中选择该配置,然后单击运行。
注意:您可以创建任意数量的配置,并使用绿色三角形运行按钮左侧的下拉菜单轻松在它们之间切换。
| 归档时间: |
|
| 查看次数: |
170 次 |
| 最近记录: |