Kotlin 浓缩咖啡:如何在每次测试开始前关闭应用程序
我正在使用expresso在kotlin中写下测试,当我运行它时,espresso似乎会保持应用程序状态,就像测试失败或进入下一个测试时一样。我希望使这些测试独立,而不是按顺序运行它们,或者在验收测试中实现if条件。因此,我正在研究如何以类似于appium的Kotlin 浓缩咖啡:如何在每次测试开始前关闭应用程序,kotlin,android-espresso,instrumentation,android-instrumentation,Kotlin,Android Espresso,Instrumentation,Android Instrumentation,我正在使用expresso在kotlin中写下测试,当我运行它时,espresso似乎会保持应用程序状态,就像测试失败或进入下一个测试时一样。我希望使这些测试独立,而不是按顺序运行它们,或者在验收测试中实现if条件。因此,我正在研究如何以类似于appium的fullReset功能的方式杀死它 我尝试使用ORCHESTRATOR测试运行程序实现,但一旦我将其放入测试选项gradle sync中,它就会显示没有要运行的测试,即使我确实有@test annotation标记,但一旦我删除它,我就能够运
fullReset
功能的方式杀死它
我尝试使用ORCHESTRATOR
测试运行程序实现,但一旦我将其放入测试选项gradle sync中,它就会显示没有要运行的测试,即使我确实有@test annotation标记,但一旦我删除它,我就能够运行测试
在每次测试之前,我甚至试着在SharedReference中放置.edit()
.clear()
和.commit()
,但同样没有帮助。下一次测试开始时,应用程序将恢复而不是重新启动
然后我再次尝试了
Espresso.pressback()
,但尽管如此,该应用程序仍然只会恢复在@之前清除首选项对您来说可能太晚了,因为它是在活动启动后调用的。您可以尝试在活动开始之前创建自己的测试规则:
class MyActivityTestRule : ActivityTestRule<MyActivity>(MyActivity::class.java, false, true) {
val preferences = ApplicationProvider.getApplicationContext<Application>()
.getSharedPreferences(NAME, MODE)
// or getDefaultSharedPreferences(), depends on your app!
override fun beforeActivityLaunched() {
preferences.edit().clear().commit()
}
}
在项目等级文件的defaultConfig下,为我工作
但是它确实需要编排器,我建议在运行测试之前进行清理和重建
下面是我如何添加orchestrator的:
androidTestUtil 'androidx.test:orchestrator:1.1.0'
作为依赖项
execution 'ANDROIDX_TEST_ORCHESTRATOR'
在测试选项下。如果我使用的是Android而不是AndroidX,如何导入应用程序ProviderAInstrumentationRegistry.getInstrumentation().getTargetContext()
?它应该为您提供应用程序上下文。当我应用此代码时,只要我签名,它就会将我重定向回登录。所以看起来,即使启动这个自定义ActivityRule或将其清除到@Before中,也会给我相同的输出,但我仍然没有在适当的时候清除它,我猜我的项目不在Androidx中!我还没有测试过。但基本上,测试选项的“ANDROID_TEST_ORCHESTRATOR”和依赖项的“com.ANDROID.support.TEST.ORCHESTRATOR.1.0.2”是相同的。让我检查一下现在提供的字符串模块符号“com.ANDROID.support.TEST.ORCHESTRATOR.1.0.2”是无效的。示例注释:“org.gradle:gradle core:2.2”,“org.mockito:mockito core:1.9.5:javadoc”。正确使用“:”而不是“.”com.android.support.test.orchestrator:1.0.2”
androidTestUtil 'androidx.test:orchestrator:1.1.0'
execution 'ANDROIDX_TEST_ORCHESTRATOR'