티스토리 뷰

공부

XCTExpectedFailure

Zedd0202 2021. 2. 3. 13:06
반응형

 

안녕하세요 :) Zedd입니다.

Xcode 12.5 베타 릴리즈 노트에서 이제 XCTests는 테스트 실패를 "expected(예상)"으로 표시하는 것을 지원합니다. 

라고 했는데요, 이때 사용하는 API가 XCTExpectedFailure입니다. 

글을 꼭 끝까지 읽어주세요@!! 

당연하게도 Xcode 12.5 beta가 있어야 사용이 가능합니다. 

 

Xcode 12.5 베타 릴리즈 노트를 보며..추측하면서 해보겠습니다.

- XCTests는 테스트 실패를 / "expected(예상)"으로 표시하는 것을 지원합니다. 

- expected 테스트 실패는 테스트가 포함된 suite의 전체합격/불합격 결과에 영향을 주지 않습니다.

 

단순히 XCTExpectFailure만 사용하는 건 안됩니다.

Zedd : 이 테스트는...실패 하겠구만...

이럴 때 XCTExpectedFailure를 사용해야합니다.

성공하는 Assert문이 있어도 안됩니다. 

위에서 뭐라고 그랬죠!? 

XCTests는 테스트 실패를 / "expected(예상)"으로 표시하는 것을 지원합니다. 

기본적으로 XCTExpectFailure가 호출되었지만,

테스트에서 실패를 기록하지 않으면 XCTest는 “unmatched expected failure”로 인해 테스트가 실패한것으로 표시합니다.

그렇습니다,,실패하는 Assert가 있어야 XCTExpectedFailure는 제 기능을 합니다.

Xcode는 테스트 네비게이터 및 테스트 보고서에 expected 실패를 다르게 표시하고,

expected 실패가 발생한 코드 줄을 설명과 함께 강조합니다.

 

XCTSkip으로 테스트를 건너뛰는 것과 달리 expected 실패가 있는 테스트는 계속 실행되어 예기치않은 변경 사항을 보고하게 됩니다.

위 코드에서와 같이 XCTSkip을 사용하면, 아예 아래 코드들은 실행조차 안하고 테스트를 스킵해버립니다.

하지만 XCTExpectFailure가 있으면 테스트는 계속 실행되게 되죠.

 

또한 expected 실패의 범위는 실패한 코드를 클로저로 묶어 제한 할 수 있습니다.

이렇게요!

 

위에서 보셨다시피, XCTExpectFailure는 반드시 테스트에서 실패를 기록해야합니다.

그렇지 않으면 에러가 났었죠.

 

Q : 아니 테스트 실패 할 수도 있고 성공 할 수도 있는 그런 테스트 앞에 놓으면 딱일 것 같은데

A : isStrict 프로퍼티를 false로 설정하여 XCTExpectFailure에 XCTExpectedFailure.Options 객체를 매개 변수로 전달하면 됩니다.

분명히 위에서는 실패를 기록하지 않으면 에러가 났습니다만, 

isStrict를 false로 주어 이런 비결정적으로 일어나는 상황을 해결 할 수 있게 됩니다.

 

이래서 글을 꼭..끝까지 읽어달라고 했어요 :D

혹시나 틀린점이 있다면 댓글로 알려주세요~.~

반응형

'공부' 카테고리의 다른 글

Fastlane (5) - App Store distribution  (2) 2021.02.13
Sitrep을 사용해보자  (0) 2021.02.06
Xcode 12.5 Beta Release Notes 📝  (3) 2021.02.02
Github Projects 사용해보기 (2)  (0) 2021.01.04
Github Projects 사용해보기 (1)  (1) 2021.01.04