Android Espresso:使用pressBack正确测试关闭应用程序

7 exception-handling back android-espresso

我正在尝试使用浓缩咖啡实施一些导航测试。实际上,我想在重新启动后检查应用程序是否已通过使用主屏幕上的后退键关闭。这是我正在使用的一段代码。

class NavigationTests  {
    @get:Rule
    val mActivityTestRule: ActivityTestRule<MainActivity> = ActivityTestRule(MainActivity::class.java)

    @Test
    fun backOnEmptyHomeMustExit(){
        Espresso.pressBack()
        Assert.assertTrue(mActivityTestRule.activity==null)
    }
}
Run Code Online (Sandbox Code Playgroud)

实际上,由于以下异常,我的测试失败了:

android.support.test.espresso.NoActivityResumedException:按下并杀死应用程序

我在 stackoverflow 中看到了一些关于使用 try/catch 块的提议,但我想知道是否有更合适的方法来做到这一点?

如何使用 Espresso 测试 android 应用程序已关闭

Android - 带有 pressBack 的 Espresso 测试

编辑:所以看起来这个模板是要走的路:

try {
    pressBack();
    fail("Should have thrown NoActivityResumedException");
} catch (NoActivityResumedException expected) { 
}
Run Code Online (Sandbox Code Playgroud)

Vad*_*imV 12

简短的回答

使用Espresso.pressBackUnconditionally().

我检查过版本 3.1.1

示例

Espresso.pressBackUnconditionally()
assertTrue(activityRule.activity.isDestroyed)
Run Code Online (Sandbox Code Playgroud)

说明

正如您在Expresso 源代码中所见,它将false标志传递给PressBackAction,因此它不会抛出异常。