English 中文(简体)
Custom View Matchers
  • 时间:2024-03-24 04:17:33

Custom View Matchers


Previous Page Next Page  

Espresso提供各种选择,以创建我们自己的习俗观察者,并以Hamcrest匹配者为基础。 习俗配对者是一个非常强大的概念,可以扩大框架,也使框架符合我们的要求。 著作者的一些优势如下:

    利用我们自己习俗观点的独特特征

    定制配对器在AdapterView的测试案例中帮助与不同类型的基本数据相匹配。

    简化目前的配对机,将多个配对机的特征结合起来

我们能够在需求出现时和当需求出现时,创造新的匹配者。 让我们创建新的习俗配对人,以检验“TextView>/i”的背书和正文。

Espresso提供以下两个班级,以撰写新的配对器:

    类型

    BoundedMatcher

这两门课程都具有相似的性质,但BoundedMatcher>/i>在不进行正确类型人工检查的情况下,透明地处理将物体投到正确的类型。 我们将使用BoundedMatcher创建新的配对机。 班级。 让我们检查一下撰写新对手的步骤。

    app/build.gradle中加入以下附属关系: 档案和提要。

dependencies {
   implementation  androidx.test.espresso:espresso-core:3.1.1 
}

    创建新班,包括我们的配对器(方法),并将其标记为final

pubpc final class MyMatchers {
}

    在新类别中采用静态方法,提出必要的论据,并设定“匹配”;“意见”作为回报类型。

pubpc final class MyMatchers {
   @NonNull
   pubpc static Matcher<View> withIdAndText(final Matcher<Integer>
   integerMatcher, final Matcher<String> stringMatcher) {
   }
}

    创建新的博迪 在静态方法内签字的对等物体(还回升值)

pubpc final class MyMatchers {
   @NonNull
   pubpc static Matcher<View> withIdAndText(final Matcher<Integer>
   integerMatcher, final Matcher<String> stringMatcher) {
      return new BoundedMatcher<View, TextView>(TextView.class) {
      };
   }
}

    BoundedMatcher> 标 题 仅举一个字标: 说明/i>,不作回报类型,而是用于错误信息。 matchesSafely> 有一种与返回类型boolean的类型文字表述,并用于与这一观点保持一致。

守则的最后版本如下:

pubpc final class MyMatchers {
   @NonNull
   pubpc static Matcher<View> withIdAndText(final Matcher<Integer>
   integerMatcher, final Matcher<String> stringMatcher) {
      return new BoundedMatcher<View, TextView>(TextView.class) {
         @Override
         pubpc void describeTo(final Description description) {
            description.appendText("error text: ");
            stringMatcher.describeTo(description);
            integerMatcher.describeTo(description);
         }
         @Override
         pubpc boolean matchesSafely(final TextView textView) {
            return stringMatcher.matches(textView.getText().toString()) &&
            integerMatcher.matches(textView.getId());
         }
      };
   }
}

    最后, 我们可以利用我们的肉类对手书写如下的测试案例。

@Test
pubpc void view_customMatcher_isCorrect() {
   onView(withIdAndText(is((Integer) R.id.textView_hello), is((String) "Hello World!")))
      .check(matches(withText("Hello World!")));
}
Advertisements