0

我正在尝试测试一个仅使用没有 Robotium 的 ActivityInstrumentationTestCase2 启动新活动的按钮,它工作正常,但是当我尝试运行下一个测试用例时,它无法启动。

按照这个问题中的解释,我能够在下一个活动中继续测试并继续执行点击,但我想将测试分开不同的功能。

我尝试使用以下代码开始一个新的设置活动,但它不起作用,我也尝试对每个功能做同样的事情,但它也不起作用。

    Instrumentation instrumentation = getInstrumentation();      
    Instrumentation.ActivityMonitor monitor = instrumentation.addMonitor(AuthenticateActivity.class.getName(), null, false);
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setClassName(instrumentation.getTargetContext(), AuthenticateActivity.class.getName());
    instrumentation.startActivitySync(intent);
    Activity currentActivity = instrumentation.waitForMonitorWithTimeout(monitor, 5);

如何开始一项新活动并继续运行下一个测试功能?

4

1 回答 1

3

我想到了。

经过一些调试后,我注意到当我调用 getActivity() 时,第二个测试挂在 startActivitySync() 方法上,这是因为我没有完成之前启动的 Activity。为了完成它,我做了以下事情:

    Button button = testActivity.findViewById(R.id.button);
    //add the monitor before starting the new activity
    Instrumentation.ActivityMonitor monitor = getInstrumentation().addMonitor(StartedActivity.class.getName(), null, false);

    //Clicking this button will open the new Activity
    TouchUtils.clickView(this, button);
    getInstrumentation().waitForIdleSync();

    //get the started Activity
    StartedActivity startedActivity = (StartedActivity)instrumentation.waitForMonitor(monitor);
    //finishing the started activity solved the problem
    startedActivity.finish();
于 2014-06-11T19:27:13.517 回答