3

ボタンをクリックした後にAndroidアプリケーションが終了するかどうかを確認するために、Robotiumを使用してテストメソッドを作成しようとしています(コードではfinish()、ユーザーがボタンをタップしたときにへの呼び出しがあります)。

public void test_onclickExit_finish() {
    String buttonText = resources.getString(R.string.exit);
    Button exitButton = solo.getButton(buttonText, true);
    solo.clickOnView(exitButton);
    // check here that the app has finished
    // wait for the activity to finish?
    assertTrue(solo.getCurrentActivity() == null);
}

しかし、このテストは失敗しています。アクティビティが終了するまで待機するようにテストを指示する方法がわかりません。またgetCurrentActivity()、アプリが終了したかどうかを確認するのに使用するのが良い方法かどうかもわかりません。

アプリケーション/アクティビティが終了したことを確認するにはどうすればよいですか?

ありがとう。

4

3 に答える 3

5

それがあなたの主な活動であれば、これを使用してください:

assertTrue(solo.getCurrentActivity().isFinishing());
于 2013-11-04T14:26:18.527 に答える
3

この質問は古いですが、私の解決策が誰かを助けることができるかもしれません。

Robotium を使用しているときに、アクティビティが終了したかどうかを待機/検出する方法を見つけました。

  • アクティビティ ルート ビューがウィンドウから切り離されたことを検出する条件を作成します (例ではヘルパー メソッドを使用しています)。

    public static Condition activityWillClose(final Activity activity) {
    
        return new Condition() {
            boolean _detached = false;
    
            { // constructor
                View rootView = activity.getWindow().getDecorView().findViewById(android.R.id.content);
                rootView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
                    @Override
                    public void onViewAttachedToWindow(View view) {
                    }
    
                    @Override
                    public void onViewDetachedFromWindow(View view) {
                        _detached = true;
                    }
                });
            }
    
            @Override
            public boolean isSatisfied() {
                return _detached;
            }
        };
    }
    
  • テストで条件を待ちます。

    solo.clickOnView(solo.getView(R.id.exitButton));
    
    Assert.assertTrue("should finish activity",
            solo.waitForCondition(activityWillClose(solo.getCurrentActivity()), 2000)
    );
    
于 2014-09-25T03:22:54.953 に答える
2

アプリケーションとインストルメンテーションは同じプロセスで実行されます。アプリケーションを終了すると、インストルメンテーションでこれ以上何もできなくなります。楽器も殺されたので失敗しました、そしてあなたはもっと何かをしようとしました。Robotiumで何をしようとしているのかを確認する方法はありません。

于 2013-03-14T19:22:11.803 に答える