2015-11-03 72 views
5

我的android應用程序有一個服務,它根據應用程序的運行次數等參數向用戶發送通知。通知在不同情況下的不同時間發送。我想測試在所有不同情況下是否在正確的時間發送通知。 Android是否提供了這種測試的方式?Android中的測試通知

+0

您正在使用哪種通知服務? –

+0

我正在使用後臺服務,每隔幾天發送一次通知。 – user12345

+0

我的意思是,你使用簡單的通知或推送通知? –

回答

1

閱讀請這篇文章

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

在這裏,你會發現這個話題很好的解釋:

Espresso爲Android是完美的和快速的自動化測試框架, 但它有一個重要的限制 - 您只能在測試環境下的應用程序內運行 。

這意味着它是不可能像這樣的應用自動化測試 特點:

  • 應用推送通知
  • 聯繫人同步
  • 下試從另一個應用程序導航到你的應用程序,

因爲您必須處理來自移動設備的其他應用程序 - NotificationBarContactsPeople應用程序等

事實上,它是不可能的,直到發佈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()將不適用於鎖定屏幕。 –