检测测试具有独立意图的 Android 活动



我正在尝试单独检测活动,但是我遇到了问题,因为部分测试要求我验证被测试的活动是否通过意图启动了另一个活动。

我正在寻找的是某种拦截意图的方法,以便我可以验证隔离的活动是否确实尝试启动下一个活动,但没有实际启动下一个活动。

我遇到的问题是,当下一个活动启动时,它会崩溃,因为我无法模拟它所需的一些关键内容。如果有一种方法可以在测试期间拦截意图,以便下一个活动永远不会启动,那就太完美了。

我正在寻找的东西甚至可能吗?

最初,我尝试使用Espresso的intended((和intending((方法来验证Intents是否在没有实际启动活动的情况下发送(如下所述:https://collectiveidea.com/blog/archives/2015/08/11/stub-your-android-intents

然而,我没有运气做这项工作。我最终求助于使用ActivityMonitor来完成这项工作。

下面是一个示例:

private void registerActivityMonitorAndStartActivity(String name) {
    Instrumentation.ActivityMonitor am = new 
    Instrumentation.ActivityMonitor(name, null, true);
    InstrumentationRegistry.getInstrumentation().addMonitor(am);
    mActivityTestRule.launchActivity(new Intent());
    int count = 0;
 while(!InstrumentationRegistry.getInstrumentation().checkMonitorHit(am, 1) && count < 50000) {
    count++;
}
    Timber.d("Count = " + String.valueOf(count));
assertTrue(InstrumentationRegistry.getInstrumentation().checkMonitorHit(am, 1));
}

这基本上有一个活动监视器监视发送到您按名称指定的活动的意图。while 循环运行,直到活动监视器看到命中,然后在命中超时时中断或中断。

最新更新