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