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

时间:2015-12-30 18:39:23

标签: android android-testing android-espresso

我无法使用espresso意图来测试使用意图启动的活动。执行流程按以下方式工作

  1. 在主活动中,单击按钮
  2. 该按钮执行AsyncTask以获取某些数据
  3. 在AsyncTask的onPostExecute中,我创建了一个意图添加获取的数据作为Intent Extra,然后启动一个显示所提取数据的新活动。
  4. 创建意图并启动新活动的代码如下所示:

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

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

    ...
    
    @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();
    }
    

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

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

    匹配意图:[]

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

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

    我在没有帮助的情况下做了很多谷歌搜索。非常感谢任何帮助。

0 个答案:

没有答案