我想知道是否有方法來測試活動方法,我想測試啓動一個活動與標誌單頂集和測試一些行爲,這怎麼可以用espresso來實現?Android Espresso測試:如何測試一項活動的onNewIntent?
1
A
回答
2
如果您使用的是ActivityTestRule
,那麼這樣的事情呢?
Intents.init();
Intent intent = // Build your intent
rule.launchActivity(intent);
// Assertions
Intents.release()
我並不是一個真正的咖啡的用戶,但我假設將啓動活動,並onNewIntent()
將被調用。然後做出你的斷言。
注意:這是使用專爲此目的設計的Espresso Intent庫。
androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.2'
1
方法onNewIntent()
是公共的,所以你實際上可以直接調用它:
activityTestRule.getActivity().onNewIntent(new Intent())
這實際工作,而是因爲你在呼喚從測試應用程序線程的方法,它不是太好。如果調用onNewIntent()
將導致UI上的任何更改,您將得到一個異常,因爲只有創建視圖的線程才能更改它。爲了解決這個問題,您可以強制UI線程
activityTestRule.getActivity().runOnUiThread(() -> {
activityTestRule.getActivity().onNewIntent(new Intent()));
});
上運行這將允許您測試活動的onNewIntent()
方法。
順便說一句,你說的是你的問題,你還想檢查一下被定義爲singleTop
的行爲。而不是直接調用該方法,你就可以開始實際應在活動引發onNewIntent()
下測試的活動:
Intent intent = new Intent(activityTestRule.getActivity().getApplicationContext(), ActivityUnderTest.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
InstrumentationRegistry.getTargetContext().startActivity(intent));
這應該結束了通話活動的onNewIntent()
下測試,只要它被定義爲singleTop
,否則它會啓動一個新的活動實例。
相關問題
- 1. Android Espresso - 測試不同的活動
- 2. NoClassDefFoundError在活動測試使用espresso
- 3. 我們如何使用Espresso測試PreferenceFragment的android設置活動?
- 4. 如何在使用Espresso測試Android活動時使用MockContentResolver?
- 5. 如何從espresso中推出另一個活動測試案例
- 6. Espresso onData測試
- 7. Android Espresso - 測試ListView行
- 8. 使用Espresso測試Android PreferenceFragment
- 9. 如何使用Espresso進行Android測試?
- 10. 關於錯誤活動的Android Espresso測試
- 11. Android的單元測試 - 如何測試多種活動
- 12. 如何測試android的抽象活動?
- 13. 用Espresso測試viewpager
- 14. Android - Espresso:每次測試重新創建活動
- 15. 用於Espresso測試的AndroidManifest.xml
- 16. Espresso如何測試活動是否完成?
- 17. 如何運行Travis-CI和Espresso測試
- 18. Android上的Espresso UI測試浮動操作按鈕菜單項
- 19. Android活動測試背光
- 20. 如何測試活動活動時間
- 21. 如何使用Espresso測試抽象類?
- 22. 在Android的Espresso測試切換環境
- 23. Android的活動測試 - 測試重新啓動
- 24. Android。如何從Espresso測試庫中滑動NavigationDrawer?
- 25. Android Studio Espresso空測試套件
- 26. Android Marshmallow:用Espresso測試權限?
- 27. 在Android 4.4上運行Espresso測試?
- 28. Android Espresso - 如何爲所有測試只運行一次設置
- 29. 如何從Espresso生成測試報告
- 30. 寫安卓espresso測試
謝謝,它工作正常,但顯示我的錯誤:無法在45秒內啓動意向意圖。也許主線程在合理的時間內沒有閒置? –
Espresso Intents旨在處理被測應用程序發送** out **的意圖。這裏沒有必要使用它。你可以在[intro](https://developer.android.com/training/testing/espresso/intents.html)中閱讀它 –