[UITest] 0. UITest 맛보기

miori·2022년 5월 12일
0

ios with test

목록 보기
1/3

테스트로 잘 작동하는 코드를 효율적으로 짜보기! 🚀

iOS를 공부해보면서, 테스트 코드를 짜본적이 없었다.
항상 시뮬레이터를 돌리고 내가 직접 모든 기능들을 체크해보고, 오류가 나면 코드를 수정하고 또 시뮬레이터를 돌리고... 이런 굴레속에서 개발 공부를 진행하였다.
사실 스타트업에서 하나의 앱을 만들때 빼고는 큰 단위의 작업을 진행하지 않았기 때문에 필요성을 잘 못느꼈던 것 같기도 하다.
하지만 최근에 iOS 토이 프로젝트를 2명의 팀원과 같이 진행하게 되면서, 테스트코드를 작성해보는 연습을 해보자는 목적이 생겼고 공부를 진행해보려한다.

맛보기

우선, 테스트 해볼 앱은 위의 시뮬레이터 화면과 같다. (앱에 대한 소개는 따로 또 포스팅을 진행해보겠다)
UITest를 맛보기 위해 이 앱에서 우선, navigation title 이 잘 나오는지 테스트를 해 보겠다.

실제 앱에서 구현한 방법

앱에서 이 부분을 구현한 방법은 다음과 같다.
1. navigation title 의 string 값을 따로 가지고 있는 모델(NavTitle)을 만들어서 관리
2. viewController 내 구현한 setAttribute() 함수 내에서 self.title = NaviTitle.mainTitle 을 통해 네이게이션 타이틀 지정
3. viewDidLoad 에서 setAttribute() 함수 호출
이렇게 3과정을 통해 네비게이션바의 타이틀이 보여질 것이다.

테스트 코드

테스트 할때는 모델에 선언한 title 값이 잘 넘어오는지 확인해야한다고 생각했다.
따라서 그 title 값이 존재하는지 테스트 해보면 될 것이다.

import XCTest

class JangBiBBalUITests: XCTestCase {
    
    var targetApp : XCUIApplication!
    
    
    override func setUp() {
        super.setUp()
        
        continueAfterFailure = false
        
        targetApp = XCUIApplication()
        targetApp.launch()
    }
    
    override func tearDown() {
        super.tearDown()
        
        targetApp = nil
    }
    
    func testNavigationBarTitle() {
        let existNaviationBar = targetApp.navigationBars["장비빨로 pr 가즈아"].exists
        XCTAssertTrue(existNaviationBar)
    }
}

테스트 코드이다. 생각보다 코드가 상당히 직관적이라 정말 놀랐다.
continueAfterFailure = false 코드를 추가하여, 실패를 했을때 바로 멈추게끔 하였다.
테스트의 결과, 아래와 같은 로그와 함께 성공메세지를 보여준다.

profile
iS를 공부하는 miori 입니다.

0개의 댓글