私のアプリケーションの自動テストを実装しようとしています。ユニットテストのSlidingDrawer ButtonでTouchUtils.clickView()が機能しない
私はタッチしたときに開くスライド式の引き出しを持っていますが、内側にボタンがあります。 私がしたいのは、スライド式の引き出しをタッチして開くこと、内側のボタンを押してスライド式の引き出しをもう一度触れることです。ここで
は、私はこのコードは時にはない、機能していることを発見した私のテストのコード( 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