0

Robotium を使用して、Google Play ストアへのリダイレクトを確認するにはどうすればよいですか?

手順:

  1. テスト アプリのリストビューからリンクをクリックします。
  2. Google Play ストアにリダイレクトされることを確認します。

Google Play ストアが開いているときに、実際にテスト アプリもその下で開いていることに気付きました。(私はすべてのビューを印刷しました)

したがって、「テストアプリからの xyz ビューが存在しないことをアサートする」ことはできません。

Google Play へのリダイレクトを確認するにはどうすればよいですか?

4

1 に答える 1

0

出来ますか?残念ながら、Robotium を簡単に実行するのは非常に困難です。これは、Robotium が現在のアクティビティを追跡する方法が原因です。ストレート インストルメンテーションを使用している場合は、クリックする前にインテント フィルターを設定するのと同じくらい簡単です。プレイ ストアを起動する表示/実行アクションを実行すると、フィルタが実際にヒットしたと断言できます (これは、フィルタがなければ実際に Google Play ストアが起動されることを証明します)。

ただし、ロボティウムを使用しているため、ロボティウムはすべてに一致するインテント フィルターを既に持っているため、これを簡単に行うことはできません。これは、リフレクションで恐ろしいことをしなければならないことを意味します。

あなたがする必要があるのは次のとおりです。

mActivityMonitors と呼ばれるインストルメンテーション クラスのプライベート メンバーを取得します。このアクティビティ モニターのリストには、その中に 1 つあることがわかります。これは robotiums アクティビティ モニターになります。これをどこかに保存してから、リストから削除します。

次に、独自のものを追加する必要があります。これは、googleplay の起動をテストするようなものです (android api ドキュメント サイトでインテント フィルターについて読むことをお勧めします)。

Instrumentation inst = getInstrumentation();
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_View);

ActivityMonitor monitor = inst.addMonitor(intentFilter, null, true); //true is imporant it blocks the activity from launching so that your test can continue.

assertEquals(0, monitor.getHits());

//do action that fires activity

assertEquals(1, monitor.getHits());
inst.removeMonitor(monitor);

robotium が引き続き期待どおりに動作するように、以前に削除したアクティビティ モニターを再度追加する必要があります。私は実際にこれをすべてテストできるマシンではありませんが、以前にこの手法を使用したことがあります。

于 2013-12-18T11:16:54.833 に答える