
在语义上,为了智力参考,为什么它打算和另一个打算,这更多地增加了混乱.这是另一个谷歌命名错误还是仅仅是我?这两种方法真的没有意义.
我误解了它的用法. I wanted to test if my activity A launched activity B.就是这样.这是我的代码:
@Testpublic voID shouldLaunchTagListActivity(){ onVIEw(withID(R.ID.edittext_description_minimized)) .perform(click()); onVIEw(withID(R.ID.linearlayout_add_note_maximize)) .check(matches(isdisplayed())); onVIEw(withID(R.ID.relativelayout_quick_action_button)) .check(matches(isdisplayed())); onVIEw(withID(R.ID.imagebutton_tag)) .perform(click()); // should I intended or intending here? // ??? intended(topackage(HomeScreenActivity.class.getname())); onVIEw(withID(R.ID.coordinatorlayout_tag_List)) .check(matches(isdisplayed()));} 即使我用错误的目标取代意图,这个测试总是通过.
我可以通过检查我的目标视图是否存在并且是否被用户看到来检查是否已启动其他活动.但现在我将运行一个不同的用户故事,我真的需要检查活动是否发送了请求以启动另一个活动(我的活动,而不是外部).
非常感谢任何解释!
解决方法 区别在于Intended仅验证Intent是否已启动(您想要什么).当Intent启动时,Intending将返回结果.对于预期(如果您想检查意图是否确实启动了您的活动)
intended(hasComponent(TagListActivity.class.getname()));
如果您按下按钮并启动,例如MyActivity,并且您针对TagListActivity进行测试,则会失败.它会抛出以下错误:
androID.support.test.espresso.base.DefaultFailureHandler$AssertionFailedWithCauseError: Wanted to match 1 intents. Actually matched 0 intents.
现在,如果您正在测试onActivityResult是否已正确处理,您将使用Intending并传入类似于此的ActivityResult:
Intent resultData = new Intent();resultData.putExtra("resultData","fancyData");ActivityResult result = new ActivityResult(Activity.RESulT_OK,resultData);intending(topackage(HomeScreenActivity.class.getname())).responDWith(result));// Perform action that throws the IntentonVIEw(withID(R.ID.imagebutton_tag)).perform(click());// Verify your Activity is in the state it should be here. 因此,在这种情况下,如果您希望“HomeScreenActivity”返回某些内容,则可以使用Intending.
总结以上是内存溢出为你收集整理的android – Espresso与意图之间的区别是什么?全部内容,希望文章能够帮你解决android – Espresso与意图之间的区别是什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)