自从我学习Espresso以来已有2周,我无法理解intendingintended。什么时候使用intendingintended?提供的示例和在线教程无济于事,研究网络对我造成的伤害大于好处。

从语义上讲,为什么要使用intend-ing和另一个intended,以供引用,所以更加增加了困惑。这是另一个Google命名错误还是仅我一个人?这两种方法确实没有任何意义。

我误会了它的用法。 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()));
}

即使我用错误的目标取代了意图,该测试也始终会通过。

我可以通过检查我的目标 View 是否存在并被用户看到来检查是否启动了其他 Activity 。但是现在,我将在另一个用户故事上运行,我真的需要检查该 Activity 是否将请求发送到启动另一个 Activity (我的 Activity ,而不是外部 Activity )。

任何解释,不胜感激!

最佳答案

区别在于Intended仅验证是否启动了Intent(您想要的)。启动Intent时,Intending将返回结果。

对于Intended(如果您要检查意图是否确实启动了您的 Activity )

intended(hasComponent(TagListActivity.class.getName()));

如果按下按钮并启动,例如MyActivity,并且测试TagListActivity的intended,则此操作将失败。它将引发以下错误:
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

关于android - 意式咖啡或意式咖啡有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39727106/

10-11 22:26
查看更多