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

Android Espresso意图

如何解决《AndroidEspresso意图》经验,为你挑选了1个好方法。

我的测试文件如下所示:

@RunWith(AndroidJUnit4.class)
@LargeTest
public class CreateNewSessionActivityTest {
    @Rule
    public IntentsTestRule mActivityRule = new IntentsTestRule<>(CreateNewSessionActivity.class);

    @Test
    public void test() {
        final Intent intent = new Intent();
        intent.setAction(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_TEXT, "this is my auth token");

        final Instrumentation.ActivityResult result = new Instrumentation.ActivityResult(Activity.RESULT_OK, intent);

        intending(hasComponent(hasShortClassName(".CreateNewSessionActivity"))).respondWith(result);

        onView(withId(R.id.create_new_session_auth_token_edit_text)).check(matches(isDisplayed()));
        onView(withId(R.id.create_new_session_auth_token_edit_text)).check(matches(withText("this is my auth token")));
    }
}

CreateNewSessionActivity.onCreate方法中,我执行以下操作:

final Intent intent = this.getIntent();

if (intent != null) {
    final String action = intent.getAction();
    final String type = intent.getType();

    if (Intent.ACTION_SEND.equals(action) && type != null) {
        if ("text/plain".equals(type)) {
            final String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);

            if (sharedText != null) {
                authTokenEditText.setText(sharedText);
            }
        }
    }
}

我还在活动下面的Manifest中注册了Intent Filter.


    
    
    

活动中的代码也可以正常工作.如果我使用任何应用程序并与其共享文本,它将显示在EditText中.

但是这条线在测试中失败了:

onView(withId(R.id.create_new_session_auth_token_edit_text)).check(matches(withText("this is my auth token")));

文本根本不会显示在EditText中.我想测试Intent的方式有什么问题吗?



1> chiuki..:

intending用于测试传出意图.要测试传入的意图,请使用ActivityRule第三个参数作为false.

@Rule
public ActivityTestRule activityRule = new ActivityTestRule<>(
    CreateNewSessionActivity.class,
    true,    // initialTouchMode
    false);  // launchActivity. False to set intent.

然后以这种方式启动您的活动:

Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, "this is my auth token");
activityRule.launchActivity(intent);

有关详细信息,请参阅http://blog.sqisland.com/2015/04/espresso-21-activitytestrule.html.

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