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 와 같은 텍스트 속성을 갖는보기 (예상)와 일치하는보기 매처를 리턴합니다 .
check 는 ViewAssertion 유형의 인수를 받아들이고 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에 할당 할 수있는 하위 개체가 서로 겹치지 않도록하는 뷰 어설 션을 반환합니다. 대상 뷰 매처를 받아들이고 뷰 어설 션을 반환하는 또 다른 옵션이있어 대상 뷰와 일치하는 하위 뷰가 겹치지 않도록합니다.