테스트 XCUITEST#1

8541 단어 SwiftXCUITestiOS

개요


사업 개발 중인 iOS 앱에 UITEST를 넣으려고 만져봤어요.
그 비망록이야.
길기 때문에 따로 씁니다.
이번에는 UITETst에 대한 준비와 간단한 테스트를 적어 봅시다.

테스트 환경


Xcode: ver 11.1
Swift: ver 5.0
(2019/10/14 확인 동작)

왜 XCUITEST입니까?


사과 아니에요?그렇게 생각하시는 분들도 계실 거예요.
이전에 참가한 적이 있다iOSTestNight
XCUITEST는 공식적으로 발표되었으니 안정을 유지해 주십시오.
이런 이야기를 듣고 엑스컷스트를 만지기로 했어요.

견본


나는 이 이야기에서 실제로 시험해 본 샘플을 여기에 놓을 것이다.
https://github.com/rnishimu22001/UITestApplication

차리다


이미 개발 중인 애플리케이션에 추가할 예정이니까요.
응용 프로그램 자체는 준비된 전제에서 진행된다.

Target 추가


Target 추가
Xcode의 "File->New->Target"을 선택하여 새 Target를 추가할 수 있습니다.

UI Testing 선택

방금 추가한 UITEst 프로젝트가 Test 레이블에서 추가되면 준비가 완료됩니다.

글을 쓰다


UITEst에서 응용 프로그램의 각view 요소는XCUIElement의 단위이다.
이 XCUIElement의 존재 확인
공격 등의 동작을 하다.

테스트가 간단하다


우선 간단한 테스트를 해보겠습니다.
우리는 두 개의 단추가 나란히 있는 프로그램만 고려한다.

이번에는 버튼에 대한 테스트입니다.
우선 프로그램의 시작과 단추의 요소를 미리 준비해서 가져오십시오.

응용 프로그램 시작


테스트를 실행하기 전에 테스트 코드에서 프로그램을 시작해야 합니다.
UITEST의 테스트 코드에서 XCUIApplication()을 선택합니다.launch()로
테스트 대상의 프로그램을 시작할 수 있기 때문에 setUp에 적어 주십시오.

class UITestApplicationUITopMenuTests: XCTestCase {
    let app = XCUIApplication()

    override func setUp() {
        super.setUp()
        self.continueAfterFailure = false
        self.app.launch()
    }

버튼 요소 가져오기


기본적으로 테스트에서 XCUIElement 가져오기
이 XCUIElement의 존재 확인을 수행합니다.
buttons 속성 + 보조 ID
UIButton을 가져오고 ID 버튼을 지정하는 요소입니다.
// XCUIElement
let button = XCUIApplication().buttons["設定したaccessibility ID"]

Interface Builder에서 Accessibility ID 설정


Interface Builder에서 특정 View에 Accessibility ID를 부여할 수 있습니다.
오른쪽 메뉴를 통해 설정할 수 있습니다.

버튼 테스트


버튼에 대한 테스트라고는 하지만 여러 가지 설이 있다
이번에는 다음과 같은 내용으로 테스트를 진행한다.
  • 버튼의 요소를 누를 수 있습니까?
  • 버튼의 요소가 응용에 존재합니까?(화면 외부도 포함)
  • 버튼의 요소가 화면에 있나요?
  • 단추 요소에 표시된 텍스트가 정확합니까?
  • 버튼 요소를 누를 수 있습니까?


    이 경우 isEnable이 사용됩니다.
    (샘플)
    let button = XCUIApplication().buttons["TestIdentifier"]
    XCTAssertTrue(button.isEnable)
    

    응용 프로그램에 단추의 요소가 있습니까?


    이 경우 exists를 사용합니다.
    (샘플)
    This property determines if the element exists within the app's current UI hierarchy.
    공식 참조
    화면 속 구성 요소를 판단하는 것이기 때문에 보이지 않는 요소나 화면 밖의 요소도 사실이다.
    요컨대'앱에 이 요소가 존재하는지'를 확인하려는 상황에서 사용할 수 있다.
    let button = XCUIApplication().buttons["TestIdentifier"]
    XCTAssertTrue(button.exists)
    

    버튼 요소가 화면에 있나요?


    이 경우 isHiittable을 사용합니다.
    (샘플)
    isHittable returns true if the element exists and can be clicked, tapped, or pressed at its current location. It returns false if the element does not exist, is offscreen, or is covered by another element.
    공식 참조
    테스트 대상이 다른 요소 아래나 화면 밖에 있으면 이 속성은 가짜입니다.
    ScrollView 상등의 화면에는 표시되지 않았지만
    응용 프로그램에 요소가 있는 상황에서 사용할 수 있다.
    let button = XCUIApplication().buttons["TestIdentifier"]
    XCTAssertTrue(button.isHittable)
    

    단추 요소에 표시된 텍스트가 정확합니까?


    XCUIElement의 label 속성을 사용합니다.
    (샘플)
    XCAssertEqual에 표시되는 텍스트
    정확한지 확인해 봅시다.
    let button = XCUIApplication().buttons["TestIdentifier"]
    XCTAssertEqual(button.label, "Calc")
    

    최후


    제가 UITst 요소에 대한 기본 테스트를 썼어요.
    다음에 TableView에 대한 테스트를 쓰고 싶습니다.

    계속하다


    썼어, 계속!
    테스트 XCUITEST#2(TableView 편)

    참고 자료

    좋은 웹페이지 즐겨찾기