2015-11-03 13 views
5

Androidアプリには、アプリの実行回数などのパラメータに基づいてユーザーに通知を送信するサービスがあります。通知は、異なる状況で異なる時間に送信されます。私は、すべての異なるケースで適切なタイミングで通知が送信されるかどうかをテストしたい。アンドロイドはそのようなテストの方法を提供していますか?Androidでの通知のテスト

+0

どの通知サービスを使用していますか? –

+0

私は数日おきに通知を送信するバックグラウンドサービスを使用しています。 – user12345

+0

つまり、簡単な通知やプッシュ通知を使用していますか? –

答えて

1

読んでくださいあなたは、このトピックの素敵な説明を見つけるだろう。ここ

http://qathread.blogspot.com/2015/05/espresso-uiautomator-perfect-tandem.html

この記事:

Android用

Espressoは完璧と高速テスト自動化フレームワーク、 ですが、それは重要なものを持っていますテストコンテキストの下であなたのアプリケーションの中でのみ を操作することができます。

  • アプリケーションプッシュ通知
  • 連絡先の同期テスト対象のアプリに他のアプリからのナビゲート
  • : 機能のようなアプリのテストを自動化することが可能ではないことを意味

モバイルデバイスから他のアプリを扱う必要があるため、 NotificationBarContactsまたはPeopleアプリなど

実際にはUIAutomator 2.0のリリースまでは不可能でした。 Android Developersのブログに掲載されている は、 "最も重要なことに、UI Automatorは現在Android Instrumentationに基づいています..."そして のうちUIAutomatorテストとEspressoテスト を使用すると、Instrumentation test runnerを使用することができます。

それに加えて、我々はUIAutomatorが Espressoテストと一緒にテストし、これはテスト中の私たちに 電話とアプリケーションの上に本当のパワーとコントロールを提供します組み合わせることができます。 UIAutomator使用

7

テスト通知: -

をすぐ下のコードを通過します。通知のテストに役立ちます。

UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); 
device.openNotification(); 
device.wait(Until.hasObject(By.text(NOTIFICATION_TITLE)), TIMEOUT); 
UiObject2 title = device.findObject(By.text(NOTIFICATION_TITLE)); 
UiObject2 text = device.findObject(By.text(NOTIFICATION_TEXT)); 
assertEquals(NOTIFICATION_TITLE, title.getText()); 
assertEquals(NOTIFICATION_TEXT, text.getText()); 
title.click(); 
device.wait(Until.hasObject(By.text(ESPRESSO.getName())), TIMEOUT);` 

build.gradleにUIAutomatorの依存関係を追加することを忘れないでください。

`//UIAutomator dependency 
    androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'` 
+0

投稿者@ dcr24私はまだコメントするには十分な評判がありません。 Prem Choudharyの答えはかなり独創的ですが、これはデバイスがロックされていないという前提でのみ動作することに注意することが重要です。そうしないと、ロック画面でdevice.openNotification()が機能しません。 –