0

ボタンをクリックするとAndroidGalleryアプリケーションが開くアプリケーションがあります。その後、ユーザーはアプリケーションの画像を選択できます。つまり、JUnitでそのボタンをクリックすると、ギャラリーが開き、そこに座っているだけです。手動で画像を選択する必要があります。ギャラリーを開いてから戻るか、可能であれば画像を選択できるようにしたいだけです。

私は次のようないくつかのオプションを試しました-

sendKeys(KeyEvent.KEYCODE_BACK)
Robotiums goBack(), goBackToActivity(), sendKey() functions
Robotiums clickOnScreen() function to click and select an image

しかし、これらはどれも機能していないようです。だから私は何をしますか?

4

2 に答える 2

0

私も同じ問題を抱えていました。Android Galleryは、テストコードからは到達できない独自のサンドボックスで実行される別のアプリケーションであるため、これを行うことはできません。

しかし、私は次の解決策を思いつきました。画像を開くためのインテントフィルターを提供する独自のダミーアプリケーションを作成できます。このアプリケーションでは、単にokでインテントを返します。

これで、テストアプリケーションから最初に画像を開くときに、デフォルトのアプリケーションとしてアプリケーションを選択するだけで済みます。その後、すべてが自動的に機能するはずです。

テストが終了したら、Androidデバイスの設定でデフォルトのインテントフィルターをリセットできます。

私のソリューションのコードは、このディスカッションにあります:Intent.ACTION_GET_CONTENTにコンテンツを提供する方法

于 2012-09-28T20:21:23.063 に答える
0

ギャラリーから返される応答をシミュレートすることが可能です。以下のコードスニペットがすべての作業を行います。

final Intent data = new Intent();
data.setData(Uri.parse("content://media/external/images/media/458")); // put here URI that you want select in gallery
Runnable runnable = new Runnable(){
    @Override
    public void run() {
        getActivity().onActivityResult(3333,-1, data);
        synchronized(this) {
            this.notify();
        }
    }
};
synchronized(runnable) {
    getActivity().runOnUiThread(runnable);
    runnable.wait();
}

この方法には2つの欠点があります。

  1. アクティビティのonActivityResultメソッドは、カプセル化にブレーキをかけるパブリックにする必要があります。
  2. テストは実際にはギャラリーを開くボタンをクリックせず、onClickハンドラーは実行されません。

ただし、このようなアプローチの利点は、模擬アプリケーションを作成したり、Android設定のデフォルトを変更したりする必要がないことです。

于 2013-04-22T21:47:08.267 に答える