【问题标题】:Testing contents of a Relative Layout in Espresso在 Espresso 中测试相对布局的内容
【发布时间】:2017-02-15 19:02:56
【问题描述】:

我有以下结构:

+------------>LinearLayout{id=2131689635, res-name=ll_monthly_advance_payments_container, 
|
+------------->LinearLayout{id=2131689636,  res-name=ll_monthly_advance_payments_list_container, 
|
+-------------->LeftRightListItemView{id=-1, 
|
+--------------->RelativeLayout{id=-1, 
|
+---------------->ScrollableTextView{id=2131689786, res-name=stv_left, text=Electricity
|
+---------------->AppCompatTextView{id=2131689787, res-name=tv_right, text=53.00 EUR
|
+-------------->LeftRightListItemView{id=-1, 
|
+--------------->RelativeLayout{id=-1, 
|
+---------------->ScrollableTextView{id=2131689786, res-name=stv_left, text=Water
|
+---------------->AppCompatTextView{id=2131689787, res-name=tv_right, text=251.00 EUR
|
+-------------->LeftRightListItemView{id=-1, 
|
+--------------->RelativeLayout{id=-1, 
|
+---------------->ScrollableTextView{id=2131689786, res-name=stv_left, text=Totals
|
+---------------->AppCompatTextView{id=2131689787, res-name=tv_right, text=304.00 EUR

我要做的是测试stv_lefttv_right 是否包含正确的值。我可以使用以下脚本单独确认每个:

onView(allOf(withId(R.id.tv_right), withText("53.00 EUR"), isDescendantOfA(withId(R.id.ll_monthly_advance_payments_list_container))));

我无法确认它们是一对。我该如何解决这个问题?

【问题讨论】:

    标签: android android-studio android-espresso android-testing hamcrest


    【解决方案1】:

    你有 ListView 吗?然后你可以使用onData DataInteraction 代替 onView ViewInteraction。

    如果这不可行,您可以使用hasSibling Matcher,例如这样:

    onView(allOf(withId(R.id.stv_left), withText("Electricity"),
        hasSibling(allOf(withId(R.id.tv_right), withText("53.00 EUR"))),
        isDescendantOfA(withId(R.id.ll_monthly_advance_payments_list_container))));
    

    但您可能希望像这样在check() 中进行文本匹配(我还删除了一些对我来说似乎不需要的匹配器):

    onView(allOf(
        withId(R.id.tv_right),
        hasSibling(withText("Electricity"))))
    .check(matches(withText("53.00Euro")));
    

    【讨论】:

      【解决方案2】:

      两者都为我工作。

      我偶然发现的另一种解决方案是:

      onView(allOf(withText("Elecrtricity"),
          withText("53.00 EUR"),
          isDescendantOfA(withId(R.id.ll_monthly_advance_payments_list_container))));
      

      【讨论】:

        猜你喜欢
        • 2012-02-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-17
        • 1970-01-01
        • 2014-07-17
        • 1970-01-01
        相关资源
        最近更新 更多