Android 测试未能匹配正确的意图组件

Android 测试未能匹配正确的意图组件,android,android-testing,android-espresso,Android,Android Testing,Android Espresso,我无法使用意式浓缩咖啡来测试使用意式浓缩咖啡开始的活动。执行流的工作方式如下 在主活动中,单击一个按钮 该按钮执行异步任务以获取一些数据 在AsyncTask的PostExecute上,我创建了一个intent,将获取的数据添加为intent Extra,然后启动一个显示获取的数据的新活动 创建意图并启动新活动的代码如下所示: @Override protected void onPostExecute(String result) { Intent intent = new Intent

我无法使用意式浓缩咖啡来测试使用意式浓缩咖啡开始的活动。执行流的工作方式如下

  • 在主活动中,单击一个按钮
  • 该按钮执行异步任务以获取一些数据
  • 在AsyncTask的PostExecute上,我创建了一个intent,将获取的数据添加为intent Extra,然后启动一个显示获取的数据的新活动
  • 创建意图并启动新活动的代码如下所示:

    @Override
    protected void onPostExecute(String result) {
       Intent intent = new Intent(context, NewActivity.class);
       intent.putExtra(key, result);
       context.startActivity(intent);
    }
    
    当我运行应用程序时,这些都能正常工作。就使用浓缩咖啡进行测试而言,测试代码如下所示:

    ...
    
    @Rule
    public IntentsTestRule<MainActivity> 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();
    }
    
    。。。
    @统治
    公共意图测试规则MinentTestRule=
    新的IntentsTestRule(MainActivity.class,false);
    @试验
    public void testMainActivityAsyncTask(){
    //用按钮查找视图
    onView(使用文本(R.string.button_text)).perform(单击());
    //确保正确的意图设置
    预期(全部)(
    hasComponent(NewActivity.class.getName()),
    有额外的钥匙(钥匙),
    toPackage(“com.example.espresso”);
    //确保启动了适当的活动和视图
    onView(
    allOf(带id(R.id.U视图),
    withText(isEmptyOrNullString());
    //让它去吧
    意图。释放();
    }
    
    当我运行测试时,测试失败,并出现以下错误(为简洁起见进行了总结):

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

    匹配意图:[]

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

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


    我在没有帮助的情况下进行了很多谷歌搜索。非常感谢您的帮助。

    尝试一次删除一个预期条件,看看是哪个条件导致了失败,并告诉我们:嗨,有什么答案吗?:)