意式咖啡与意式咖啡之间的区别是什么?
问题描述:
自从我学习浓咖啡2周后,我无法掌握intending
和intended
。我何时使用intending
和intended
?所提供的示例和在线教程并没有帮助和研究网络对我造成的损害远远超过了好处。意式咖啡与意式咖啡之间的区别是什么?
从语义上讲,对于智力参考,为什么它是intend-ing
和其他intended
,这更多地增加了混淆。这是另一个谷歌命名错误还是只是我?这两种方法确实没有意义。
我误解了它的用法。 I wanted to test if my activity A
launched activity B
。而已。这里是我的代码:
@Test
public 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启动时,Intending
将返回结果。
对于Intended
(如果你想检查是否意图实际上确实推出的活动)
intended(hasComponent(TagListActivity.class.getName()));
如果你按下一个按钮,并推出,也就是说,MyActivity您测试intended
为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 Intent
onView(withId(R.id.imagebutton_tag)).perform(click());
// Verify your Activity is in the state it should be here.
在这种情况下
所以,如果您希望“HomeScreenActivity”返回某些内容,则可以使用Intending
。
你应该是写官方文档的人 –
@NeonWarge:为了回答这个语义问题,我相信这是因为'intending'实际上并没有验证,并且在* Intent被抛出之前设置它,所以结果将被退回。 * Intent被抛出后,'Intended'被验证*的位置。 – DeeV
谢谢,这很清楚。我会编辑你的答案,增加一些关于“打算”的内容我现在能够完成我的测试工作。 –