2016-06-23 5 views
0

私のテストケースは簡単です。私はアプリ内に状態があります。プッシュ通知が受信されたときはいつでも、私はAndroidデバイスにローカルに保存したパラメータに対してエクストラのパラメータをチェックする必要があります。これらのパラメータ値が一致しない場合は、プッシュ通知を無視する必要があります。そうでなければ、デバイスに表示されます。Appiumのテストケースで引数付きのadbを使用してブロードキャストを送信するにはどうすればよいですか?

私はすべてを実装して正常に動作することをテストしたので、将来はこのテストを自動化できるようにテストケースを作成したいと思います。私はテストを自動化するためにAppiumでJUNITテストケースを使用しています。テスト時には、adbを使用してプッシュ通知をトリガーするのが簡単です。これは私がターミナルからトリガーするために使用するコマンドです。

adb shell am broadcast -a com.google.android.c2dm.intent.RECEIVE -n package.name/com.google.android.gms.gcm.GcmReceiver --ei "pw_msg" 1 

..期待どおりに動作します。私のAppiumのテストケースでは、私はこれが好きです。

Runtime.getRuntime().exec("adb shell am broadcast -a com.google.android.c2dm.intent.RECEIVE -n package.name/com.google.android.gms.gcm.GcmReceiver --ei \"pw_msg\" 1"); 

..プッシュ通知をトリガーしていないようです。

Runtime.getRuntime().exec("adb shell svc data disable") 
Runtime.getRuntime().exec("adb shell am start -n package.name/package.name.MainActivity") 

などのコマンドがうまく動作するため、Appiumテストケースからadbコマンドを実行できることを確認できます。ブロードキャストadbコマンドで何が問題になっていますか?私は間違って書いていますか?いくつかの制限や何かにぶつかっていますか?

答えて

0

少しの作業の後、私は問題を修正しました。まず、私はこのように、端末の出力を読む...

final Process exec = Runtime.getRuntime().exec("adb shell am broadcast -a com.google.android.c2dm.intent.RECEIVE " 
       + "-n facilit.net.mobile.debug/com.google.android.gms.gcm.GcmReceiver " 
       + "--ei \"pw_msg\" 1"); 

     final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(exec.getInputStream())); 

     String s; 
     while((s = bufferedReader.readLine()) != null) { 
      System.out.println(s); 
     } 

これは私のような端末からの出力を見ることができ..

放送:テント{行為= com.googleを。 android.c2dm.intent.RECEIVE CMP = package.name/com.google.android.gms.gcm.GcmReceiver (補足を有する)}ブロードキャストを終了:結果= 404

通常404は、フォーマットがあった意味コマンドのエラーです。私がしなければならなかったのは、書式を修正することでした。

関連する問題