0

我正在使用 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();
}

编辑:我已经编辑了这个问题。两种方法都在不同的活动中。

4

1 回答 1

0

使用 solo.getView() 而不是 findViewById。

于 2013-08-15T11:18:02.637 回答