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

时间:2018-09-20 16:08:01

标签: exception-handling android-espresso back

我正在尝试使用espresso进行一些导航测试。其实,我想检查一下刚开始后是否已经通过使用主屏幕上的Back键关闭了应用程序。 这是我正在使用的一段代码。

impl<'f, T: 'static> Consumer<T> where T: FromForm<'f> {
    fn new(form: Form<'f, T>) -> Self {
        Consumer(form.into_inner())
    }

    fn get(&self) -> &T {
        &self.0
    }
}

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

  

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

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

How to test android app has closed with Espresso

Android - Espresso test with pressBack

编辑: 因此,似乎该模板是可行的方法:

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

    @Test
    fun backOnEmptyHomeMustExit(){
        Espresso.pressBack()
        Assert.assertTrue(mActivityTestRule.activity==null)
    }
}

1 个答案:

答案 0 :(得分:0)

简短答案

使用Espresso.pressBackUnconditionally()

我已经检查了3.1.1版

示例

Espresso.pressBackUnconditionally()
assertTrue(activityRule.activity.isDestroyed)

爆炸

如您在Expresso source code中所见,它将false标志传递给PressBackAction,以便它不会引发异常。