当前位置:  开发笔记 > 编程语言 > 正文

测试无法匹配正确的意图组件

如何解决《测试无法匹配正确的意图组件》经验,为你挑选了0个好方法。

我在使用espresso意图来测试使用意图启动的活动时遇到了麻烦.执行流程以下列方式工作

    在主活动中,单击一个按钮

    该按钮执行AsyncTask以获取一些数据

    在AsyncTask的onPostExecute中,我创建了一个intent add fetched data作为Intent Extra,然后启动一个显示所获取数据的新活动.

创建intent并启动新活动的代码如下所示:

@Override
protected void onPostExecute(String result) {
   Intent intent = new Intent(context, NewActivity.class);
   intent.putExtra(key, result);
   context.startActivity(intent);
}

这一切都在我运行应用程序时有效.至于使用espresso进行测试,测试代码如下所示:

...

@Rule
public IntentsTestRule mIntentTestRule =
                           new IntentsTestRule<>(MainActivity.class, false);

@Test
public void testMainActivityAsyncTask() {
    // Find view with button
    onView(withText(R.string.button_text)).perform(click());

    // Ensure correct intent setup
    intended(allOf(
            hasComponent(NewActivity.class.getName()),
            hasExtraWithKey(key),
            toPackage("com.example.espresso")));

    // Ensure appropriate activity and view is launched
    onView(
            allOf(withId(R.id.expected_view),                                                   
            withText(isEmptyOrNullString())));

    // Let it go
    Intents.release();
}

当我运行测试时,测试失败并出现这些错误(为简洁起见):

...想要匹配1个意图.实际上匹配0意图.

匹配意图:[]

记录的意图:-Intent {cmp = com.example.doingstuff/com.example.espresso.NewActivity(has extras)}处理包:[[com.example.doingstuff]],extras:[Bundle [{akey = aVal]] )

这里有几个问题:1.为什么错误消息中的cmp值前面是我的MainActivity类的包名,即"com.example.doingstuff /"可能是我的问题的一部分2.上面的错误消息是否表明它找到了一个意图,即"com.example.doingstuff/com.example.espresso.NewActivity",但它与我的预期不符?

我在没有帮助的情况下做了很多谷歌搜索.任何帮助是极大的赞赏.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有