回答
Robotium無法與通知欄進行交互。你被限制在一個應用程序。檢查常見問題robotium,有這樣提到: http://code.google.com/p/robotium/wiki/QuestionsAndAnswers
也許不是你要找的,但像往常一樣的解決方案是將答案:
- 創建一個接口抽象的通知功能。
- 創建委派給系統通知API的默認實現。
- 運行測試時,用支持測試的模擬實現替換(或修飾)默認實現。
這可以用下面的技術被簡化:
- 依賴注入框架(如RoboGuice),以簡化實施的選擇。
- 模擬庫(如EasyMock)自動創建模擬實現。
解決了類似的情況,通過在數據存儲中存儲通知詳細信息,然後每當用戶通過通知欄進入應用程序時發送和標記爲已確認。 由於robotium僅限於應用程序邊界,因此無法訪問系統數據,因此使用基於junit/jmockit的單元測試來測試行爲。
嘗試通過擴展NotificationManager並覆蓋notify()
方法來創建模擬對象。重寫的函數可以被聲明。在您的測試用例中,將模擬注入主題活動並使用Android JUnit Test運行測試。
這是你想要什麼,我想。 uiautomator。
僅適用於Android 4.1或以上版本。您需要先運行示例代碼。
你可以寫一段代碼來執行下拉狀態欄動作,然後做你的事情。這只是UI測試。您無法使用uiautomator測試您的數據。
希望這會有所幫助。
只是爲了節省其他人一些時間:看起來應該檢測到通知,但是沒有,正試圖用NO_CREATE標誌創建一個PendingIntent。
由於嘗試使用與現有通知相同的值創建PendingIntent,但使用NO_CREATE標誌,應該返回null,它似乎會告知通知是否已有一個。
不幸的是,這似乎並不可靠。
退房NotificationListenerService:
「當新的通知張貼或刪除,或它們的排名變化,接收來自系統調用服務」
您可以使用模擬器,只爲這些類型的測試中,採用Android棉花糖(API 23)。
例如:
public void testCheckNotification_2() throws IOException, InterruptedException, GcmException
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
GcmResponse gcmResponse = endPointImp.sendGcmMulticastRequestImp(getGcmMultiRequest());
assertThat(gcmResponse.getSuccess(), is(1));
Thread.sleep(2000);
assertThat(mManager.getActiveNotifications().length, is(1));
StatusBarNotification barNotification = mManager.getActiveNotifications()[0];
assertThat(barNotification.getId(), is(INCIDENCIA.getTitleRsc()));
// We check the pending intent.
PendingIntent pendingIntent = barNotification.getNotification().contentIntent;
assertThat(pendingIntent.getCreatorPackage(), is(GcmRequest.PACKAGE_DIDEKINDROID));
}
}
重要的部分是在調用NotificationManager(mManager的),以檢查它是否具有發送多播消息到谷歌FCM HTTP端點後活性通知。
- 1. 我可以使用機架測試進行部署測試嗎?
- 2. 如何測試我的PHP代碼 - 我可以使用哪些測試框架?
- 3. Android測試框架
- 4. 我可以切換Rails應用程序的測試框架嗎?
- 5. 使用android測試框架的Android多點觸控測試
- 6. 使用普通的JRE Junit測試可以測試Android應用程序嗎?
- 7. 使用uiautomator測試通知欄圖標
- 8. 我可以爲Android狀態欄通知做TDD嗎?
- 9. 我可以使用Xamarin測試記錄器測試我的應用程序收到的推送通知嗎?
- 10. 我可以使用UI測試來測試是否出現通知?
- 11. 我可以在PhantomJS之外運行Durandal的測試框架嗎?
- 12. 我如何測試NSAssert使用iPhone的單元測試框架
- 13. Android中的測試通知
- 14. 通過測試變量測試使用柑橘框架
- 15. Android自動化測試使用JUnit和集成測試框架
- 16. Robolectric與Android測試框架
- 17. Android JUnit測試框架
- 18. BDD Android UI測試框架?
- 19. Android測試框架說明
- 20. Android UI測試框架
- 21. 用es6測試框架(AVA)測試es5
- 22. 以後的TDD測試可以使早期測試過時嗎
- 23. 使用Python的自動電子郵件通知測試框架
- 24. 您可以使用Facebook「測試用戶」測試Messenger Bot嗎?
- 25. 系統測試的測試框架
- 26. 組件測試的測試框架
- 27. 我可以強制使用Visual Studio單元測試框架對屬性進行單元測試嗎?
- 28. 我可以使用Go lang進行自動化測試而不是機器人框架測試嗎?
- 29. 我可以使用Xcode的UI測試來檢查推送通知嗎?
- 30. 我可以使用Robolectric來測試靜態庫罐嗎?
有一個名爲robotium的測試框架,但我不知道它是否支持通知。但是如果標準的junit lib不支持它,你可以檢查一下。 http://code.google.com/p/robotium/ – 2010-10-28 17:23:15