我正在为我们的Android应用程序开发自动化测试套件,并在等待活动完全加载时遇到麻烦。我可以调用getActivity,但仅仅因为它显示了我希望在我的测试中看到的活动并不总是意味着活动的组件可以使用(完全加载)。通过Activity API查看并没有改变任何东西,其他方法似乎过于侵入并破坏了测试的初始状态。有没有人知道是否有办法询问应用程序或VM是否加载了当前活动?
答案 0 :(得分:3)
正如我在a comment中提到的那样,在setContentView()
早期致电onCreate()
之后,您的视图层次结构应该正常工作。对于任何活动或测试类,我从来没有遇到过这样的问题..
我不确定这对这种特定情况有什么帮助,但一般来说,您可以通过调用getInstrumentation().waitForIdleSync()
来确定UI事件队列何时为空。这将阻止,直到没有更多的UI事件要处理。
答案 1 :(得分: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);
}
您的活动将完全正常运行并加载布局,在这种情况下,您可以访问视图及其内容
@SmallTest
public void testSimpleCreate() {
final MyActivity activity = getActivity();
assertNotNull(activity);
assertNotNull(tv1);
assertEquals("mystr1", tv1.getText().toString());
assertNotNull(tv1);
assertEquals("mystr2", tv2.getText().toString());
}
答案 2 :(得分:0)
可能有一种更优雅的方式,但你是否尝试在OnCreate()方法的末尾设置一个布尔值?