小编Fil*_*mos的帖子

使用Espresso单击RecyclerView项目内的视图

如何使用Espresso单击RecyclerView项目中的特定视图?我知道我可以点击位置0处的项目:

onView(withId(R.id.recyclerView)) .perform(RecyclerViewActions.actionOnItemAtPosition(0, click()));

但是我需要点击该项目内的特定视图而不是项目本身.

提前致谢.

- 编辑 -

更确切地说:我有一个RecyclerView(R.id.recycler_view)项目是CardView(R.id.card_view).在每个CardView内部,我有四个按钮(除其他外),我想点击一个特定的按钮(R.id.bt_deliver).

我想使用Espresso 2.0的新功能,但我不确定是否可行.

如果不可能,我想使用这样的东西(使用托马斯凯勒代码):

onRecyclerItemView(R.id.card_view, ???, withId(R.id.bt_deliver)).perform(click());
Run Code Online (Sandbox Code Playgroud)

但我不知道该在问号上放些什么.

android android-espresso android-recyclerview

92
推荐指数
5
解决办法
4万
查看次数

带有片段的Android Espresso功能测试

我的应用程序中有三个活动

  1. 登录活动
  2. 一项主要活动
  3. 细节活动

我想使用espresso来测试一系列事件:单击登录活动上的登录按钮,打开主活动,然后单击主活动中的列表项,打开详细活动,然后单击详细信息中的另一个按钮活动.我开始创建这个简单的测试,以获得对listview的引用:

public class LoginActivityTest extends ActivityInstrumentationTestCase2<LoginActivity> {

    public LoginActivityTest() {
        super(LoginActivity.class);
    }

    @Override
    public void setUp() throws Exception {
        super.setUp();

        getActivity();
    }

    public void testSequence() throws Exception {
        // Login
        onView(withId(R.id.button_log_in)).perform(click());

        // Check if MainActivity is loaded
        onView(withId(R.id.container)).check(matches(isDisplayed()));

        // Check if Fragment is loaded
        onView(withId(R.id.list)).check(matches(isDisplayed()));
    }
}
Run Code Online (Sandbox Code Playgroud)

mainActivity onCreate()方法中,我加载一个像这样的片段:

getFragmentManager().beginTransaction()
                .add(R.id.container, mListFragment)
                .commit();
Run Code Online (Sandbox Code Playgroud)

ListFragment片段有一个列表(R.id.list),但仍是测试失败了NoMatchingViewException:

android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with id: com.tests.android.development:id/list
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

java android functional-testing android-fragments android-espresso

6
推荐指数
1
解决办法
5779
查看次数

更改PopupMenu中单个项目的文本颜色

我有一个用户单击图像时出现的弹出菜单.使用的代码是:

PopupMenu popupMenu = new PopupMenu(mContext, mImageView);
popupMenu.setOnMenuItemClickListener(MyClass.this);
popupMenu.inflate(R.menu.menu_my_class_options);
popupMenu.show();
Run Code Online (Sandbox Code Playgroud)

菜单有三个动作,我希望其中一个文本的颜色为红色(而不是黑色).

那可能吗?我已经找到了一些答案(例如,这里),显示如何使用活动的选项菜单执行此操作,但他们需要访问该onCreateOptionsMenu方法...

提前致谢.

- 编辑 -

菜单文件:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/item_edit"
        app:showAsAction="ifRoom|withText"
        android:title="@string/action_edit_address"
        android:visible="true"/>
    <item
        android:id="@+id/item_retake_photo"
        app:showAsAction="ifRoom|withText"
        android:title="@string/action_retake_photo"
        android:visible="true"/>
    <item
        android:id="@+id/item_delete"
        app:showAsAction="ifRoom|withText"
        android:title="@string/action_delete_shipment"
        android:visible="true"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

android popupmenu

6
推荐指数
2
解决办法
3718
查看次数