リスト内の項目を長押ししてコンテキスト メニューを表示する Robotium テストを作成しています。何らかの方法で、tearDown のコンテキスト メニューを検出して、コンテキスト メニューから戻ってアプリケーションからサインアウトできるようにする必要があります。どうすればいいですか?
2 に答える
最新のRobotiumバージョンでそれを行うためのより良い方法があるかどうかはわかりませんが、以前のバージョンで機能的なハックが見つかりました。
private ListView getContextMenuListView(){
ArrayList<ListView> currentListViews = solo.getCurrentListViews();
for (ListView lv : currentListViews){
String listViewClassName = lv.getClass().getName();
if (listViewClassName.startsWith("com.android.internal.app.AlertController$RecycleListView")){
return lv;
}
}
return null;
}
他のすべてと同様に、リストビューがポップアップするのを待つ必要があることに注意してください。すぐに見つけようとすると、特にエミュレーターで実行しているときに、それを見逃す可能性があります。
finishOpenedActivities は、開いているすべてのアクティビティを閉じる必要がありますが、ティアダウン メソッドでアプリケーションの状態をクリアするために何か特別なことをする必要があると想定しています。その場合、コンテキストメニューの存在を確認する必要があります。これは、コンテキストメニューに対して何かを行っているため(またはdmonsの回答を見て)、実行するコードがあると想定しています。
もちろん 2 番目のオプションであり、時間をかける価値があるかもしれないことは、すべての状態を削除する簡単な方法をアプリケーション/テスト インフラストラクチャに組み込むことです。これにより、ティアダウンが一貫し、以前の状態からすべてが開始されます。通常、状態をクリアするために x と y と z を実行することを覚えておく必要があるときはいつでも、そのうちの 1 つを一度忘れてしまい、追跡するのが面倒になるため、長期的にはテストが改善され、より迅速な開発が可能になります。