2
我试图为我的应用程序实现自动化测试。TouchUtils.clickView()在单元测试中的SlidingDrawer按钮上不起作用
我有滑动抽屉在视图中打开时触摸,里面是一个按钮。 我想要做的就是触摸滑动抽屉打开它,触摸里面的按钮并关闭滑动抽屉再次触摸它。
这是一件我的测试代码( ActivityInstrumentationTestCase2)
ToggleButton insideBtn = (ToggleButton) mActivity.findViewById(R.id.sliding_btn);
Button drawerBtn = (Button) mActivity.findViewById(R.id.drawer_btn);
TouchUtils.tapView(this,drawerBtn);
TouchUtils.tapView(this, insideBtn);
TouchUtils.tapView(this, drawerBtn);
...some assertion ...
我发现这段代码有时工作,有时没有。问题在于抽屉没有打开后导致 insideBtn无法触摸。
所以,我想这个代码:
ToggleButton insideBtn = (ToggleButton) mActivity.findViewById(R.id.sliding_btn);
Button drawerBtn = (Button) mActivity.findViewById(R.id.drawer_btn);
SlidingDrawer drawer = (SlidingDrawer) mActivity.findViewById(R.id.drawer);
while(!drawer.isOpened()) {
TouchUtils.tapView(this,drawerBtn);
}
TouchUtils.tapView(this, insideBtn);
TouchUtils.tapView(this, drawerBtn);
...some assertion ...
但结果是,有时当测试工作在它第一次工作所以不需要循环。但是,当它不工作循环正在工作,直到无限 - 没有触摸导致抽屉被打开。
你有什么想法如何写这个测试工作可靠吗?
我以为这可能是同步问题,所以我试着在触摸代码后面加上_mInstrumentation.waitForIdleSync()_。没有效果。 – Michal 2012-03-16 17:46:21