我想知道是否有方法来测试活动方法,我想测试启动一个活动与标志单顶集和测试一些行为,这怎么可以用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)中阅读它 –