18

我正在为我们的 android 应用程序开发一个自动化测试套件,并且在等待活动完全加载时遇到了麻烦。我可以调用 getActivity,但仅仅因为它显示了我希望在我的测试中看到的活动,并不总是意味着活动的组件已准备好使用(完全加载)。查看 Activity API 并没有发现任何问题,并且其他方法似乎过于侵入性并且破坏了测试的初始状态。有谁知道是否有办法询问应用程序或虚拟机是否加载了当前活动?

4

2 回答 2

2

正如我在评论中提到的,您的视图层次结构应该在您调用setContentView()早期之后起作用onCreate()。我在任何活动或测试课上都没有遇到过这样的问题。

我不确定这对这种特定情况有任何帮助,但通常您可以通过调用来确定 UI 事件队列何时为空getInstrumentation().waitForIdleSync()。这将一直阻塞,直到没有更多 UI 事件需要处理。

于 2010-01-18T23:34:54.663 回答
1

如果您setUp()在测试用例扩展中创建这样的方法ActivityInstrumentationTestCase2<MyActivity>

@Override
protected void setUp() throws Exception {
    super.setUp();

    final MyActivity activity = getActivity();

    tv1 = (EditNumber)activity.findViewById(resId1);
    tv2 = (EditNumber)activity.findViewById(resId2);
}

您的 Activity 将完全可操作并加载布局,在这种情况下,您可以访问视图及其内容这一事实证明了这一点

@SmallTest
public void testSimpleCreate() {
    final MyActivity activity = getActivity();
    assertNotNull(activity);

    assertNotNull(tv1);
    assertEquals("mystr1", tv1.getText().toString());
    assertNotNull(tv1);
    assertEquals("mystr2", tv2.getText().toString());
}
于 2010-01-18T22:36:25.080 回答