Android - 单元测试活动已经开始,并对其进行处理

Jul*_*ien 3 junit android unit-testing

我正在测试一个对象,它应该在调用open(url)方法时启动一个新活动:

public void open(String url) {
    Intent i = new Intent(getContext(), Browser.class);
    Log.d(TAG, "open:" + url);
    i.putExtra("URL", url);
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    getContext().startActivity(i);
}
Run Code Online (Sandbox Code Playgroud)

我想获取活动的实例,并根据URL检查一些参数.

我发现这个剪了:

ActivityManager am = (ActivityManager) mActivity
    .getSystemService("activity");
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
Run Code Online (Sandbox Code Playgroud)

但它只返回类的名称,我想在活动的实例上断言.

有人知道如何做到这一点?

谢谢 :-)

朱利安

Jul*_*ien 6

好的,我找到了一个解决方案:ActivityMonitor类:

private Instrumentation.ActivityMonitor mBrowserActivityMonitor;

protected void setUp() throws Exception {
    super.setUp();

    mBrowserActivityMonitor = new Instrumentation.ActivityMonitor(Browser.class.getName(), null, false);
    getInstrumentation().addMonitor(mBrowserActivityMonitor);
    //...
}


public void testOpen()
{
    //...

    Activity activity = mBrowserActivityMonitor.waitForActivityWithTimeout(5 * 1000);
    assertNotNull("Activity was not started", activity);

    //...

}
Run Code Online (Sandbox Code Playgroud)