ActivityInstrumentationTestCase2无法在活动转换后设置新测试

时间:2014-06-11 16:10:08

标签: android unit-testing android-activity android-instrumentation

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

按照本question中的说明,我能够在下一个活动中继续测试并继续执行点击,但我想将测试分成不同的功能。

我尝试使用以下代码启动设置的新活动,但它没有工作,我也尝试在每个功能上做同样的事情,但它也没有工作。

    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);

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

1 个答案:

答案 0 :(得分: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();