ここで明らかな何かが欠けているに違いありません:
Robotium の助けを借りて、デバイスでインストルメンテーション テスト ケースを実行しています。ある時点で、テスト対象のアプリによって、既定の電子メール作成アクティビティが起動されます。
私が知りたいのは、そのアクティビティを閉じて、アプリのアクティビティを再び表示するにはどうすればよいですか? これが必要な理由の少なくとも1 つは、現在のテスト ケースが完了した後、電子メール アクティビティがフォアグラウンドにとどまり、次のテスト ケースが適切に実行されないことです。
メールアクティビティに必要なバックキーを送信しようとしましたが、this.sendKeys(KeyEvent.KEYCODE_BACK)
またはsolo.goBack()
運がありませんでした。
パッケージ内の最上位アクティビティへの参照を実行solo.getCurrentActivity()
または取得した場合、実際のフォアグラウンド アクティビティを取得する方法はありません。また、言及されたものは、メールのアクティビティではなく、私のアクティビティに直接行きます。this.getActivity()
sendKeys/goBack
アプリが Play ストアのメイン アクティビティを起動すると、同じ問題が発生します。
電子メール アクティビティはテスト対象のパッケージの一部ではなく、これが問題の一部である可能性があることに気付きました。
それで、電子メール活動を閉じる方法はありますか?
編集
今のところ、@Joe Malinの最初の提案に固執しています:
私のViewModel(またはコントローラー)には、private static boolean _productionMode = true;
テスト中にのみ使用されるヘルパーメソッド(内部ヘルパークラスの場合はより良い)があります:
public void dontLaunchExternalApps()
{
_productionMode = false;
}
次に、ViewModel の通常のメソッドで次のようにします。
if (_productionMode)
{
launchSomeExternalApp();
}
else
{
// Do Nothing Or Set Some Internal Flag
}