我正在尝试使用没有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);
如何开始新活动并继续运行下一个测试功能?
答案 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();