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