티스토리 뷰
Xcode 11.4 ) setUpWithError / tearDownWithError, XCTSkipIf / XCTSkipUnless
Zedd0202 2020. 4. 8. 22:20
안녕하세요 :) Zedd입니다.
지금 방금 알았어요;...
....
https://zeddios.tistory.com/953
이때는 딱 Beta 처음 나오자마자 쓴거였는데..Test New Feature에도 제가 안적어놨네요
제가 빼먹었었나봐요 😱
아무튼...
Xcode 11.4부터 이렇게 되었읍니다..
자세히 볼까요?
기존에 테스트를 만들면
이렇게 setUp과 tearDown메소드가 기본적으로 있었죠
Xcode 11.4에서 테스트를 만들면
setUp대신 setUpWithError가
tearDown대신 tearDownWithError가
기본적으로 있는 걸 보실 수 있습니다.
그 우리가 알던 setUp과 tearDown과 거의 똑같습니다.
테스트 메소드가 실행되기 전에 setUpWithError이,
테스트메소드가 실행 된 후 tearDownWithError가 불립니다.
setUpWithError, tearDownWithError에서 에러를 던질 수 있게 바뀌었다는 것만 빼면 다 똑같아요.
기존의 setUp, tearDown을 못쓰는것도 아닙니다!
둘 다 쓸 수 있습니다. tearDown도 캡쳐는 안했지만 마찬가지에요.
혹시나..호출 순서....가 궁금하신 분들을 위해..
이 순서로 불리네요.
자 암튼......!!!
그럼 오늘의 주인공
setUpWithError()
tearDownWithError()
를 보자ㅑ
걍 똑같음
뭐 예를들어서 테스트 때만 쓰는 json 스트링이 있다고 생각해봅시다.
얘를 data로 만들고 객체로 만들어서 뭔가를 테스트 할거잖아요?
이 친구를 객체로 만드는 작업은 뭐 setUp에서 할거 아니에요
ㅠ JsonDecoder로 하기 귀차나....
암튼 JsonDecoder든..JSONSerialization든 try를 사용해야하죠.
setUpWithError가 에러를 던질 수 있게 됨으로서 걍 try하나로 끝.
do-catch나 try? 필요없음 ㅠ
자 json이 올바른 json이면 setUpWithError에서 에러가 안날텐데..
만약에 올바른 json이 아니라면...?
"Zedd" 뒤에 쉼표 있어야하는데 없음
그럼
테스트가 "스킵"되게 됩니다.
파일 제일 위에 이런 경고창이 뜨는 걸 볼 수 있습니다!
테스트는 전부 실패한걸로 나올테지만, 사실상 이 테스트 메소드들은 실행이 안됐습니다.
왜냐? 각각 setUpWithError호출했는데 setUpWithError서 뭔가 잘못됐단 마랴
에러를 뿜고 바로 tearDownWithError를 호출하게 됩니다.
~.~ 그렇구만..
요 스킵이라는 칭구도
Xcode 11.4에서 새로 나왔습니다!
이 친구들도 보도록 하죠.
XCTSkip*이친구들은 런타임 조건에 따라 동적으로 테스트 스킵을 지원합니다.
Xcode 11.4 릴리즈노트에 있는 코드를 그대로 가져와 볼게요!
자 만약에 서버에 접근할 수 있으면 테스트를 실행하고, 아니면 테스트를 실행 안하면 좋겠죠?
그럴때 XCTSkip을 사용하면 됩니다.
여기서는 XCTSkipIf를 사용했네요.
XCTSkipIf는 저 표현식이 true면 테스트를 스킵하는 친구입니다.
자 canAccessServer가 false네요.
그럼 스킵해야겠죠!? 테스트를 실행해볼게요.
그럼 이렇게 표시되게 됩니다. 테스트 메소드가 실행이 안되는거에요!
(setUpWithError과 tearDownWithError는 당연히 불리겠죠?)
성공, 실패와 다르게 네비게이터에도 다른 모양으로 (저 회색 아이콘) 표시되게 됩니다.
만약 canAccessServer가 true면
그냥 아래에다 쭉쭉 내가 테스트 하고싶은 코드들 적어주면 됩니당
XCTSkipUnless는 if와 다르게 표현식이 false인 경우 스킵하는거에요.
예제를 그대로 쓰겠다는 의지...
만약에 AuthManager.canAccessServer가 true에요! 근데 XCTSkipUnless를 썼네요.
안에 표현식이 false일때 스킵한다고 그랬죠?
true == false => false => 스킵 ㅇㅇ
암튼 그렇습니다..!!!!
그냥 무조건>..!!!! 무조건 스킵 시킬 수도 있습니다.
이러케
그렇구만..
모두 Xcode 11.4에서만 사용가능한 메소드들이니 참고해주세요 :D
테스트,,,열심히 해볼게 애플,,,,고맙다...
+ ) 잘못된 정보가 있어 수정했습니다...! 아직 이 글을 많이 안보시긴 했는데, 참고해주세요.,,,
'공부' 카테고리의 다른 글
dyld: Library not loaded: @rpath/XCTest.framework/XCTest (2) | 2020.04.09 |
---|---|
Xcode 11.3 ) Swift Package Manager(SPM)과 Build Configuration (1) | 2020.04.09 |
os_log (0) | 2020.03.22 |
SonarQube integration with Xcode (feat. Docker) (1) | 2020.03.14 |
Sign in with Apple - Creating a Custom Sign in with Apple Button (4) | 2020.03.04 |
- swift delegate
- 스위프트 문법
- swift array
- 회고
- SwiftUI
- IOS
- UIBezierPath
- Accessibility
- WWDC
- swift sort
- 스위프트
- github
- 피아노
- np-complete
- FLUTTER
- Git
- np-hard
- swift tutorial
- swift3
- iOS delegate
- Xcode
- Combine
- fastlane
- WKWebView
- ios 13
- Swift
- WidgetKit
- swift 공부
- 제이슨 파싱
- actor
- Total
- Today
- Yesterday