Espresso学习笔记二:Espresso基础知识

http://blog.csdn.net/miaoqilong/article/details/46650903

一. Espresso基础知识

Espresso包含4个主要组件:

1. Espresso:和view交互的入口点(通过onView和OnData),还有一些与view无关的APIs(如:pressBack)。

包含以下函数:

[java]  view plain  copy
  1. public static ViewInteraction onView(final Matcher viewMatcher);  
  2. public static DataInteraction onData(Matcher dataMatcher);  
  3. public static void registerLooperAsIdlingResource(Looper looper);  
  4. public static void registerLooperAsIdlingResource(Looper looper, boolean considerWaitIdle);  
  5. public static void registerIdlingResources(IdlingResource... resources);  
  6. public static void setFailureHandler(FailureHandler failureHandler);  
  7. public static void closeSoftKeyboard();  
  8. public static void openContextualActionModeOverflowMenu();  
  9. public static void pressBack();  
  10. public static void openActionBarOverflowOrOptionsMenu(Context context);  
  11. 2. ViewMatchers:一组实现了Matcher接口的对象。可以将一个或多个ViewMatchers传入到onView方法中,用来在视图层次中定位视图。

    包含以下函数:

    [java]  view plain  copy
    1. public static Matcher isAssignableFrom(final Class clazz);  
    2. public static Matcher withClassName(final Matcher classNameMatcher);  
    3. public static Matcher isDisplayed();  
    4. public static Matcher isCompletelyDisplayed();  
    5. public static Matcher isDisplayingAtLeast(final int areaPercentage);  
    6. public static Matcher isEnabled();  
    7. public static Matcher isFocusable();  
    8. public static Matcher hasFocus();  
    9. public static Matcher hasSibling(final Matcher siblingMatcher);  
    10. public static Matcher withContentDescription(String text);  
    11. public static Matcher withContentDescription(final Matcher charSequenceMatcher);  
    12. public static Matcher withId(int id);  
    13. public static Matcher withId(final Matcher integerMatcher);  
    14. public static Matcher withTagKey(final int key);  
    15. public static Matcher withTagKey(final int key,final Matcher objectMatcher);  
    16. public static Matcher withTagValue(final Matcher tagValueMatcher);  
    17. public static Matcher withText(String text);  
    18. public static Matcher withText(final Matcher stringMatcher);  
    19. public static Matcher withText(final int resourceId);  
    20. public static Matcher isChecked();  
    21. public static Matcher isNotChecked();  
    22. public static Matcher hasContentDescription();  
    23. public static Matcher hasDescendant(final Matcher descendantMatcher);  
    24. public static Matcher isClickable();  
    25. public static Matcher isDescendantOfA(final Matcher ancestorMatcher);  
    26. public static Matcher withEffectiveVisibility(final Visibility visibility);  
    27. public static Matcher withParent(final Matcher parentMatcher);  
    28. public static Matcher withChild(finalMatcher childMatcher);  
    29. public static Matcher isRoot();  
    30. public static Matcher supportsInputMethods();  
    31. public static Matcher hasImeAction(int imeAction);  
    32. public static Matcher hasImeAction(finalMatcher imeActionMatcher);  
    33. public static void assertThat(T actual,Matcher matcher);  
    34. public static void assertThat(String message, T actual,Matcher matcher);  
    35. 3. ViewActions:一组可以执行的动作(如点击动作:click),可以传入到ViewInteraction.perform方法中。

      包含以下函数:

      [java]  view plain  copy
      1. public static ViewAction clearText();  
      2. public static ViewAction click();  
      3. public static ViewAction click(ViewAction rollbackAction);  
      4. public static ViewAction swipeLeft();  
      5. public static ViewAction swipeRight();  
      6. public static ViewAction closeSoftKeyboard();  
      7. public static ViewAction pressImeActionButton();  
      8. public static ViewAction pressBack();  
      9. public static ViewAction pressMenuKey();  
      10. public static ViewAction pressKey(int keyCode);  
      11. public static ViewAction pressKey(EspressoKey key);  
      12. public static ViewAction doubleClick();  
      13. public static ViewAction longClick();  
      14. public static ViewAction scrollTo();  
      15. public static ViewAction typeTextIntoFocusedView;  
      16. public static ViewAction typeText(String stringToBeTyped);  

      4. ViewAssertions:用来验证视图的状态,需要传到ViewInteraction.check方法中,大多数时候要使用matches函数来验证当前选择的视图的状态。

      包含以下函数:

      [java]  view plain  copy
      1. public static ViewAssertion doesNotExist();  
      2. public static ViewAssertion matches(final Matchersuper View> viewMatcher);  
      3. public static ViewAssertion selectedDescendantsMatch(final Matcher selector, final Matcher matcher);  

      例如:

      [java]  view plain  copy
      1. onView(withId(R.id.my_view))      // withId(R.id.my_view)是一个ViewMatcher,用来得到指定的视图  
      2.   .perform(click())               // click()是一个ViewAction,用在执行一个click动作  
      3.   .check(matches(isDisplayed())); // matches(isDisplayed())是一个ViewAssertion,用来验证视图是否已经显示  

      二. Hamcrest matcher

      hamcrest matcher功能非常强大,用于匹配定义的声明。Espresso中的matcher都属于自定义的hamcrest matcher,hamcrest matcher还被用于Mockito、Junit等框架中。例如:onView方法使用一个matcher在视图层中获得唯一一个匹配的视图对象。

      Hamcrest本身也包含许多有用的matcher:

      • Core
        • anything - always matches, useful if you don't care what the object under test is
        • describedAs - decorator to adding custom failure description
        • is - decorator to improve readability - see "Sugar", below
      • Logical
        • allOf - matches if all matchers match, short circuits (like Java &&)
        • anyOf - matches if any matchers match, short circuits (like Java ||)
        • not - matches if the wrapped matcher doesn't match and vice versa
        • both, either
      • Object
        • equalTo - test object equality using Object.equals
        • hasToString - test Object.toString
        • instanceOfisCompatibleType - test type
        • any - Is the value an instance of a particular type? Use this version to make generics conform, for example inthe JMock clause with(any(Thing.class))
        • notNullValuenullValue - test for null
        • sameInstance - test object identity
        • typeCompatibleWith
        • eventFrom - Tests if the value is an event announced by a specific object
      • Beans
        • hasProperty - test JavaBeans properties
        • getPropertyDescriptor,propertyDescriptorsFor - Utility class for accessing properties on JavaBean objects.
        • samePropertyValuesAs
      • Collections
        • array - test an array's elements against an array of matchers
        • arrayContainingInAnyOrder
        • arrayContaining
        • arrayWithSize,emptyArray
        • hasSize - Matches if collection size satisfies a nested matcher
        • empty - Tests if collection is empty
        • emptyIterable - Tests if collection is empty
        • isIn,isOneOf
        • containsInAnyOrder
        • contains
        • iterableWithSize
        • hasEntryhasKeyhasValue - test a map contains an entry, key or value
        • hasItemhasItems - test a collection contains elements
        • hasItemInArray - test an array contains an element
        • everyItem
      • Number
        • closeTo - test floating point values are close to a given value
        • greaterThangreaterThanOrEqualTolessThanlessThanOrEqualTo - test ordering
        • comparesEqualTo
      • Text
        • equalToIgnoringCase - test string equality ignoring case
        • equalToIgnoringWhiteSpace - test string equality ignoring differences in runs of whitespace
        • containsStringendsWithstartsWith - test string matching
        • isEmptyString,isEmptyOrNullString - Matches empty Strings (and null)
        • stringContainsInOrder
      • Xml
        • hasXPath - Applies a Matcher to a given XML Node in an existing XML Node tree, specified by an XPath expression



      你可能感兴趣的:(Android)