[iOS] Async Unit Test

Sungeun Park·2019년 2월 19일
1

iOS

목록 보기
1/1
post-thumbnail

생각보다 길어진 웹 작업이 끝나고, 다시 Xcode로 돌아올 시간!

구현은 다 했는데 아직 앱 테스트가 남아있었다.
이번 업데이트는 비동기 작업이 많았는데 비동기 테스트는 또 어떻게 해야하는지 몰라서 뒷전으로 미뤄두었다가
테스트 -> 구현이 아닌 선 구현 후 테스트를 진행하게 됐다.... :(

사실 아직 테스트 코드를 많이 작성해보지 않아서 XCTAssertEqual도 낯설지만... 차근차근 공부한다는 마음으로!
우선, 비동기 작업이 필요 없었던 기존 테스트 코드를 살펴보자.

ㅁ Basic Test

  • XCTAssetEqual
    - XCTAssertEqual(expression1, expression2)
    • expression1 == expression2 이면 test pass, 아니면 failed
func testURLs() {    
  let base = URLService.base 
    XCTAssertEqual(base, "https://www.naver.com")
        
  let update = URLService.updateStatusURL
    XCTAssertEqual(update, "https://www.naver.com/update")
}
  • XCTAssert
    - XCTAssert(expression, ...)
    • XCTAssertTrue(expression, ...)
    • XCTAssertFalse(expression, ...)
    • XCTAssertXCTAssertTrue는 동일한 기능. expression == false일 때 failure.
    • XCTAssertFalse는 반대로 expression == true일 때 failure.
  • XCTFail(...)
    - 즉시 failure를 발생시키는 메서드
    • 뒤의 메시지는 Option으로 적으면 failed message에 붙어서 나온다
func testStayTimeWhenSessionEnd() {
  let session = eventTrackingManager.getEqualSesssion(type: .login)
  if session.stayTime == nil {
    //failed message: "failed - stayTime calculate fail"
    XCTFail("stayTime calculate fail")
  } else {
    // expression가 true이기 때문에 항상 pass
    XCTAssert(true, "it's true!")
  }
}

ㅁ Testing Asynchronous Operations with Expectations

  • 비동기 작업은 현재 코드 흐름 내에서 직접 실행되지 않기 때문에 expectation을 만든 후 비동기 작업이 성공적으로 완료되면 expectationfullfill()되도록 테스트를 작성합니다.

ㅇ Framework

: 이건 다음에 포스팅 해보는 걸로!

  • Unit test framework: Quick, Nimble
  • UI test framework: Earlgrey

ㅇ 조잘조잘

Basic이라고 생각하는 것만 적었는데 1시간이 훌쩍 지나버림.. ^^....
글 쓰면서 내가 대충 그러겠지 하고 쓴 코드들이 맞는지
다시 애플 문서 보고 테스트 돌려보고 하다보니 오래걸렸다.
정작 코드 칠때는 대충 공부하다가 정리해서 글 쓰려고 하니 이제서야 제대로 공부하는 건 무엇???
그래도 이렇게라도 다시 한 번 제대로 알고 갑니다!!

ㅁ 참고 링크

profile
iOS Developer

0개의 댓글