如何选择espresso:适配器中的项目,存在于活动的framelayout内的片段中?

时间:2016-03-17 11:00:59

标签: android android-espresso

我的应用程序具有MainActivity,其framelayout充当容器。

当我在屏幕之间导航时,我使用此容器填充不同的片段。现在,在其中一个片段中

主要活动:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <include layout="@layout/toolbar" />


    <android.support.v4.widget.DrawerLayout
        android:layout_width="match_parent"
        android:id="@+id/drawerLayout"
        android:layout_height="match_parent">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <!-- Framelayout to display Fragments -->
            <FrameLayout
                android:id="@+id/frame_container"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>


        </FrameLayout>



        <!-- navigation drawer -->
        <RelativeLayout
            android:layout_gravity="left"
            android:layout_width="match_parent"
            android:background="#fff"
            android:layout_height="match_parent">

            <ListView
                android:id="@+id/left_drawer"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#fff"
                android:dividerHeight="1dp"
                android:divider="@drawable/transparent"
                />
        </RelativeLayout>

    </android.support.v4.widget.DrawerLayout>

</LinearLayout>

片段:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    xmlns:customfont="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v4.widget.SwipeRefreshLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/swipeContainerNewFaces"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ListView
            android:id="@android:id/list"
            android:layout_alignParentTop="true"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:cacheColorHint="#00000000"
            android:divider="@null"
            android:listSelector="@android:color/transparent"
            android:background="@color/main_bg">
        </ListView>

    </android.support.v4.widget.SwipeRefreshLayout>



    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        ads:adSize="SMART_BANNER"
        ads:adUnitId="@string/admob_publisher_id_radar"/>


    <fr.castorflex.android.smoothprogressbar.SmoothProgressBar
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/progressBar"
        android:layout_width="match_parent"
        android:layout_height="6dp"/>

    <LinearLayout
        android:id="@+id/layoutRequestTimeout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:orientation="vertical"
        android:layout_margin="20dp"
        android:visibility="invisible" >

        <io.newfaces.layout.MyTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAlignment="center"
            android:gravity="center_vertical"
            android:textSize="30sp"
            android:textColor="@color/app_main_color"
            customfont:fontName="Lato-BoldItalic.ttf"
            android:text="@string/radar_no_connection_title"/>

        <io.newfaces.layout.MyTextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:textSize="16sp"
            android:textColor="@color/black"
            android:gravity="center"
            customfont:fontName="Lato-ThinItalic.ttf"
            android:text="@string/radar_no_connection_message"/>

        <ImageView
            android:id="@+id/ivReloadRadar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:padding="20dp"
            android:src="@drawable/ic_nav_refresh"/>

    </LinearLayout>

</RelativeLayout>

我有一个适配器,其布局如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/row_story_view"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:customfont="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:background="#f1f1f1"
    android:layout_height="match_parent">
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<LinearLayout
    android:id="@+id/storiesHeader"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:orientation="horizontal"
    android:background="#ffffff"
    android:layout_marginTop="5.2dp">
    <FrameLayout
        android:id="@+id/storiesHeaderprofileImage"
        android:layout_weight="0.025"
        android:layout_marginLeft="10.1dp"
        android:layout_width="40dp"
        android:layout_height="50dp">
        <View
            android:id="@+id/storiesViewChatBorder"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/border_not_visible"
            android:layout_gravity="center_vertical"/>
        <de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/storiesProfilePicture"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_gravity="center_vertical"
            android:src="@drawable/com_facebook_profile_default_icon"
            android:transitionName="my_transition"/>
    </FrameLayout>
    <LinearLayout
        android:id="@+id/storiesHeaderProfileInfo"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:layout_marginLeft="6.2dp"
        android:layout_gravity="center_vertical"
        android:layout_weight="0.8">
        <io.newfaces.layout.MyTextView
            android:id="@+id/storiesName"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:gravity="center_vertical"
            android:textColor="#434343"
            android:text="Dinesh"
            android:textSize="14sp"
            android:layout_weight="0.6"
            customfont:fontName="Lato-BoldItalic.ttf"/>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/storiesHeaderDistance"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:orientation="vertical"
        android:layout_marginRight="12.5dp"
        android:layout_weight="0.175">
        <io.newfaces.layout.MyTextView
            android:id="@+id/storiesDate"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textColor="#000000"
            android:textSize="12sp"
            android:layout_weight="0.6"
            android:gravity="center_vertical|right"
            customfont:fontName="Lato-BoldItalic.ttf" />
        <io.newfaces.layout.MyTextView
            android:id="@+id/storiesLocation"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="-18dp"
            android:textColor="#797979"
            android:textSize="12sp"
            android:layout_weight="0.4"
            android:gravity="center_vertical|right"
            customfont:fontName="Lato-MediumItalic.ttf"/>
    </LinearLayout>
</LinearLayout>
    <RelativeLayout
        android:id="@+id/storiesBody"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#f8f8f8"
        android:layout_below="@+id/storiesHeader">
        <RelativeLayout
            android:id="@+id/storiesBodyOnlyTextLayout"
            android:layout_width="match_parent"
            android:layout_height="250dp">
            <io.newfaces.layout.MyTextView
                android:id="@+id/storyTextOnly"
                android:layout_marginTop="110dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="24.5sp"
                android:textColor="#000000"
                android:textStyle="italic"
                customfont:fontName="Lato-MediumItalic.ttf"
                android:gravity="center"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true" />
        </RelativeLayout>
        <RelativeLayout
            android:id="@+id/storiesBodyImageTextLayout"
            android:layout_width="match_parent"
            android:layout_height="250dp">
            <ImageView
                android:id="@+id/storyImage"
                android:scaleType="centerCrop"
                android:layout_width="match_parent"
                android:layout_height="250dp" />
            <View
                android:id="@+id/gradient"
                android:layout_width="match_parent"
                android:layout_height="250dp"
                android:alpha="0.5"
                android:background="@drawable/gradient" />
            <io.newfaces.layout.MyTextView
                android:id="@+id/storyTextWithImage"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="14.9dp"
                android:layout_marginRight="42.2dp"
                android:layout_marginBottom="16.4dp"
                android:textSize="16.5sp"
                android:textColor="#ffffff"
                android:gravity="bottom"
                customfont:fontName="Lato-MediumItalic.ttf"
                android:layout_alignBottom="@+id/storyImage"/>
        </RelativeLayout>
    </RelativeLayout>
    <LinearLayout
        android:id="@+id/storiesFooter"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_below="@id/storiesBody"
        android:layout_marginBottom="20dp"
        android:background="#ffffff"
        android:orientation="horizontal">
        <LinearLayout
            android:id="@+id/storiesLikesLinLayout"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="0.3"
            android:orientation="vertical">
            <RelativeLayout
                android:id="@+id/storiesLikesRelLayout"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="center_horizontal">
                <LinearLayout
                    android:id="@+id/storiesLikesLinInRelLayout"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:gravity="center"
                    android:orientation="horizontal">
                    <ImageView
                        android:id="@+id/likesImg"
                        android:layout_width="14.6dp"
                        android:layout_height="13.4dp"
                        android:src="@drawable/ic_story_like"/>
                    <io.newfaces.layout.MyTextView
                        android:id="@+id/noOfLikesForStory"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="15sp"
                        customfont:fontName="Lato-Light.ttf"
                        android:layout_marginLeft="5.6dp"
                        android:text="0 likes">
                    </io.newfaces.layout.MyTextView>
                </LinearLayout>
            </RelativeLayout>
        </LinearLayout>
        <View
            android:id="@+id/borderShare1"
            android:layout_width="1.5dp"
            android:layout_height="match_parent"
            android:background="#d8d8d8"/>
        <LinearLayout
            android:id="@+id/storiesCommentsLinLayout"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="0.4"
            android:orientation="vertical">
            <RelativeLayout
                android:id="@+id/storiesCommentsRelLayout"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="center_horizontal">
                <LinearLayout
                    android:id="@+id/storiesCommentsLinInRelLayout"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:gravity="center"
                    android:orientation="horizontal">
                    <ImageView
                        android:id="@+id/commentsImg"
                        android:layout_width="14.6dp"
                        android:layout_height="13.4dp"
                        android:src="@drawable/ic_story_comment"/>
                    <io.newfaces.layout.MyTextView
                        android:id="@+id/noOfComments"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="15sp"
                        customfont:fontName="Lato-Light.ttf"
                        android:layout_marginLeft="5.6dp"
                        android:text="0 comments">
                    </io.newfaces.layout.MyTextView>
                </LinearLayout>
            </RelativeLayout>
        </LinearLayout>
        <View
            android:id="@+id/borderShare2"
            android:layout_width="1.5dp"
            android:layout_height="match_parent"
            android:background="#d8d8d8"/>
        <LinearLayout
            android:id="@+id/storiesShareLinLayout"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="0.3"
            android:orientation="vertical">
            <RelativeLayout
                android:id="@+id/storiesShareRelLayout"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="center_horizontal">
                <LinearLayout
                    android:id="@+id/storiesShareLinInRelLayout"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:gravity="center"
                    android:orientation="horizontal">
                    <ImageView
                        android:id="@+id/shareImg"
                        android:layout_width="14.6dp"
                        android:layout_height="13.4dp"
                        android:src="@drawable/ic_story_share"/>
                    <io.newfaces.layout.MyTextView
                        android:id="@+id/buttonShare"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="15sp"
                        customfont:fontName="Lato-Light.ttf"
                        android:layout_marginLeft="5.6dp"
                        android:text="Share">
                    </io.newfaces.layout.MyTextView>
                </LinearLayout>
            </RelativeLayout>
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>
</LinearLayout>

我想在espresso中选择 storiesCommentsLinLayout storiesBodyOnlyTextLayout

我尝试使用onData(withClild(anyOf(withText(&#34; mySampleText&#34;)))) 并得到错误

android.support.test.espresso.PerformException: Error performing 'load adapter data' on view 'is assignable from class: class android.widget.AdapterView'.

在android.app.Instrumentation $ InstrumentationThread.run(Instrumentation.java:1970)

Caused by: java.lang.RuntimeException: No data found matching: has child: (with text: is "royalTreatment") contained values: <[Data: io.newfaces.bo.Story@ad6689a (class: io.newfaces.bo.Story) token: 0, Data: io.newfaces.bo.Story@245a5cb (class: io.newfaces.bo.Story) token: 1, Data: io.newfaces.bo.Story@62da1a8 (class: io.newfaces.bo.Story) token: 2, Data: io.newfaces.bo.Story@89f34c1 (class: io.newfaces.bo.Story) token: 3, Data: io.newfaces.bo.Story@c227466 (class: io.newfaces.bo.Story) token: 4, Data: io.newfaces.bo.Story@706d3a7 (class: io.newfaces.bo.Story) token: 5, Data: io.newfaces.bo.Story@c8f3054 (class: io.newfaces.bo.Story) token: 6, Data: io.newfaces.bo.Story@ea95bfd (class: io.newfaces.bo.Story) token: 7, Data: io.newfaces.bo.Story@ad170f2 (class: io.newfaces.bo.Story) token: 8, Data: io.newfaces.bo.Story@8c30343 (class: io.newfaces.bo.Story) token: 9]>

1 个答案:

答案 0 :(得分:1)

当您使用onData语句时,您正在处理数据类(在我的案例中我可以看到io.newfaces.bo.Story)而不是视图。因此,您应该定义onData中匹配的io.newfaces.bo.Story,然后您可以在View上对此数据进行必要的操作。

这样的事情:

onData(allOf(is(new BoundedMatcher<Object, Person>(Person.class) {
    @Override
    public void describeTo(Description description) {
    }
    @Override
    protected boolean matchesSafely(Story story) {
        return story.id == 123;
   }
})))

我希望你的Story对象有一个id(例如)。

您可以找到更多详情here