我正在使用 Robotium 和 ActivityInstrumentationTestCase2,我需要在每个测试用例之后完全重新启动我的应用程序。该应用程序未在第一个测试用例之后的所有测试用例中找到视图 ID。
这意味着我的观点在 TestCase2 中为空,这没有意义。
该应用程序有一个加载屏幕。这个加载屏幕只出现在 testCase1 之前,solo.getCurrentActivity() 返回不同的 Activity 实例。
public void testCase1() throws Exception {
solo.getCurrentActivity(); //returns LoadingActivity
solo.sleep(5000);
solo.getCurrentActivity(); //returns MainActivity
View view = (TextView) solo.findViewById("Button1", TIMEOUT_VIEW_SEARCH);
solo.clickOnView(view);
}
public void testCase2() throws Exception {
solo.getCurrentActivity(); //returns LoadingActivity
solo.sleep(5000);
solo.getCurrentActivity(); //returns LoadingActivity
View view = (TextView) solo.findViewById("Button1", TIMEOUT_VIEW_SEARCH);
solo.clickOnView(view);
}
findviewById(...) 方法根据当前活动搜索视图的 ID。这工作正常。
setUp 和 tearDown 看起来像下面的两个。当 testCase2 启动时,我在开始屏幕上,但应用程序并没有全新启动。
@Override
public void setUp() throws Exception {
super.setUp();
solo = new MySolo(getInstrumentation(), getActivity());
}
@Override
public void tearDown() throws Exception {
solo.finishOpenedActivities();
super.tearDown();
}
编辑:我已经编辑了这个问题。两种方法都在不同的活动中。