Espresso 테스트 프레임 워크-어설 션보기

앞서 논의한 바와 같이, 뷰 어설 션은 실제 뷰 (뷰 매처를 사용하여 발견)와 예상 뷰가 모두 동일하다고 주장하는 데 사용됩니다. 샘플 코드는 다음과 같습니다.

onView(withId(R.id.my_view)) .check(matches(withText("Hello")))

여기,

  • onView () 는 일치하는 뷰에 해당하는 ViewInteration 객체를 반환합니다 . ViewInteraction 은 일치하는 뷰와 상호 작용하는 데 사용됩니다.

  • withId (R.id.my_view)id 속성이 my_view 와 같은 뷰 (실제)와 일치하는 뷰 매처를 반환합니다 .

  • withText (“Hello”) 는 또한 Hello 와 같은 텍스트 속성을 갖는보기 (예상)와 일치하는보기 매처를 리턴합니다 .

  • checkViewAssertion 유형의 인수를 받아들이고 ViewAssertion 개체에 전달 된 것을 사용하여 assertion을 수행 하는 메서드입니다 .

  • matches (withText ( "Hello")) 는 뷰 어설 션을 반환합니다.real job실제보기 ( withId를 사용하여 발견 )와 예상보기 ( withText를 사용하여 발견 )가 하나이고 동일 하다고 주장하는 것입니다 .

보기 객체를 주장하기 위해 에스프레소 테스트 프레임 워크에서 제공하는 몇 가지 방법을 알아 보겠습니다.

존재하지 않는다()

뷰 매 처가 일치하는 뷰를 찾지 못하도록하는 뷰 어설 션을 반환합니다.

onView(withText("Hello")) .check(doesNotExist());

여기에서 테스트 케이스는 Hello라는 텍스트가있는보기가 없는지 확인합니다.

성냥()

대상 뷰 매처를 수락하고 뷰 어설 션을 반환하여 뷰 매처 (실제)가 존재하고 대상 뷰 매처와 일치하는 뷰와 일치하는지 확인합니다.

onView(withId(R.id.textView_hello)) .check(matches(withText("Hello World!")));

여기에서 테스트 케이스는 id, R.id.textView_hello를 갖는 뷰가 존재하고 Hello World!라는 텍스트가있는 대상 뷰와 일치하는지 확인합니다.

isBottomAlignedWith ()

대상 뷰 매처를 수락하고 뷰 어설 션을 반환하여 뷰 매처 (실제)가 존재하고 대상 뷰 매처와 하단 정렬되도록합니다.

onView(withId(R.id.view)) .check(isBottomAlignedWith(withId(R.id.target_view)))

여기서 테스트 케이스는 id, R.id.view를 갖는 뷰가 존재하고 id, R.id.target_view를 갖는 뷰와 하단 정렬되어 있는지 확인 합니다.

isCompletelyAbove ()

대상보기 일치자를 승인하고보기 어설 션을 리턴하여보기 일치 자 (실제)가 존재하고 대상보기 일치 자 위에 완전히 위치하도록합니다.

onView(withId(R.id.view)) .check(isCompletelyAbove(withId(R.id.target_view)))

여기서, 테스트 케이스는 id, R.id.view를 가진 view가 존재하고 id, R.id.target_view를 가진 view 위에 완전히 위치 하는지 확인합니다.

isCompletelyBelow ()

대상보기 일치자를 승인하고보기 어설 션을 리턴하여보기 일치 자 (실제)가 존재하고 대상보기 일치 자 바로 아래에 위치하도록합니다.

onView(withId(R.id.view)) .check(isCompletelyBelow(withId(R.id.target_view)))

여기서 테스트 케이스는 id, R.id.view를 가진 view가 존재하고 id, R.id.target_view를 가진 view 아래 완전히 위치 하는지 확인 합니다.

isCompletelyLeftOf ()

대상 뷰 매처를 수락하고 뷰 어설 션을 반환하여 뷰 매처 (실제)가 존재하고 대상 뷰 매처의 완전히 왼쪽에 위치하도록합니다.

onView(withId(R.id.view)) .check(isCompletelyLeftOf(withId(R.id.target_view)))

여기서 테스트 케이스는 id, R.id.view를 가진 view가 존재하고 id, R.id.target_view를 가진 view의 완전히 왼쪽에 위치 하는지 확인합니다.

isCompletelyRightOf ()

대상 뷰 매처를 수락하고 뷰 어설 션을 반환하여 뷰 매처 (실제)가 존재하고 대상 뷰 매처의 완전히 오른쪽에 위치하도록합니다.

onView(withId(R.id.view)) .check(isCompletelyRightOf(withId(R.id.target_view)))

여기서 테스트 케이스는 id, R.id.view를 가진 view가 존재하고 id, R.id.target_view를 가진 view의 완전히 오른쪽에 위치하는지 확인합니다.

isLeftAlignedWith ()

대상 뷰 매처를 수락하고 뷰 어설 션을 반환하여 뷰 매처 (실제)가 존재하고 대상 뷰 매처와 정렬 된 상태로 유지되도록합니다.

onView(withId(R.id.view)) .check(isLeftAlignedWith(withId(R.id.target_view)))

여기서 테스트 케이스는 id, R.id.view를 가진 view가 존재하고 id, R.id.target_view 를 가진 view와 정렬되어 있는지 확인합니다.

isPartiallyAbove ()

대상보기 일치자를 승인하고보기 어설 션을 리턴하여보기 일치 자 (실제)가 존재하고 대상보기 일치 자 위에 부분적으로 위치하도록합니다.

onView(withId(R.id.view)) .check(isPartiallyAbove(withId(R.id.target_view)))

여기서 테스트 케이스는 id, R.id.view를 갖는 뷰가 존재하고 id, R.id.target_view를 갖는 뷰 위에 부분적으로 위치 하는지 확인합니다.

isPartiallyBelow ()

대상보기 일치자를 승인하고보기 어설 션을 리턴하여보기 일치 자 (실제)가 존재하고 대상보기 일치 자 아래 부분적으로 위치하도록합니다.

onView(withId(R.id.view)) .check(isPartiallyBelow(withId(R.id.target_view)))

여기서 테스트 케이스는 id, R.id.view를 갖는 뷰가 존재하고 id, R.id.target_view를 갖는 뷰 아래 부분적으로 위치 하는지 확인 합니다.

isPartiallyLeftOf ()

대상보기 일치자를 승인하고보기 어설 션을 리턴하여보기 일치 자 (실제)가 존재하고 대상보기 일치 자의 부분적으로 왼쪽에 위치하도록합니다.

onView(withId(R.id.view)) .check(isPartiallyLeftOf(withId(R.id.target_view)))

여기서 테스트 케이스는 id, R.id.view를 갖는 뷰가 존재하고 id, R.id.target_view를 갖는 뷰의 부분적으로 왼쪽에 위치 하는지 확인 합니다.

isPartiallyRightOf ()

대상 뷰 매처를 수락하고 뷰 어설 션을 반환하여 뷰 매처 (실제)가 존재하고 대상 뷰 매처의 부분적으로 오른쪽에 위치하도록합니다.

onView(withId(R.id.view)) .check(isPartiallyRightOf(withId(R.id.target_view)))

여기서 테스트 케이스는 id, R.id.view를 가진 view가 존재하고 id, R.id.target_view를 가진 view의 부분적으로 오른쪽에 위치 하는지 확인 합니다.

isRightAlignedWith ()

대상 뷰 매처를 수락하고 뷰 어설 션을 반환하여 뷰 매처 (실제)가 존재하고 대상 뷰 매처와 올바르게 정렬되도록합니다.

onView(withId(R.id.view)) .check(isRightAlignedWith(withId(R.id.target_view)))

여기에서 테스트 케이스는 id, R.id.view를 갖는 뷰가 존재하고 id, R.id.target_view를 갖는 뷰와 오른쪽 정렬 되는지 확인 합니다.

isTopAlignedWith ()

대상 뷰 매처를 수락하고 뷰 어설 션을 반환하여 뷰 매처 (실제)가 존재하고 대상 뷰 매처와 최상단 정렬되도록합니다.

onView(withId(R.id.view)) .check(isTopAlignedWith(withId(R.id.target_view)))

여기에서 테스트 케이스는 id, R.id.view를 갖는 뷰가 존재하고 id, R.id.target_view를 갖는 뷰와 최상단 정렬 되는지 확인합니다.

noEllipsizedText ()

뷰 계층 구조에 생략되거나 잘린 텍스트 뷰가 포함되지 않도록하는 뷰 어설 션을 반환합니다.

onView(withId(R.id.view)) .check(noEllipsizedText());

noMultilineButtons ()

뷰 계층 구조에 여러 줄 단추가 포함되지 않도록하는 뷰 어설 션을 반환합니다.

onView(withId(R.id.view)) .check(noMultilineButtons());

noOverlaps ()

TextView 또는 ImageView에 할당 할 수있는 하위 개체가 서로 겹치지 않도록하는 뷰 어설 션을 반환합니다. 대상 뷰 매처를 받아들이고 뷰 어설 션을 반환하는 또 다른 옵션이있어 대상 뷰와 일치하는 하위 뷰가 겹치지 않도록합니다.