Swift 6부터 코드를 테스트하기 위해 편리한 Swift Testing 프레임워크가 발표되었습니다.
사용해보기 위해 기존 XCTest 프레임워크를 사용한 테스트코드를 마이그레이션 해보았습니다.
간단하게 적용한 것들
- 결과값을 확인하기위한 assertion들의 함수는 모드 #expect 매크로로 통일되어서 더 명확해지고 사용도 간단했습니다.
- 네트워킹코드도 async ~ await 문법을 사용하면 기존에 대기시간을 설정하는 코드도 사용할 필요가 없었습니다.
- 테스트함수를 작성할 때 @Test만 붙여주면 테스트함수로 인식하고 인자들을 여러개 배열로 넘겨줄 수 있고 그 외 여러가지 옵션도 제공합니다.
애플에서 🔗 Migrating a test from XCTest 해당 문서를 제공하기도 하고 프로젝트 생성시 UnitTest 프레임워크 기본값이 Swift Testing이므로 해당 프레임워크를 사용하도록 권장하는 것 같다.
🌎 async ~ await
Swift에서 5.5부터 지원하는 Swift Concurrency 중 하나인 async ~ await 문법에 대해서 살펴봤다.
기존에 비동기코드를 작성할 때 completionHandler, DispatchQueue, RxSwift, Combine 등등이 있다. async ~ await은 비동기코드를 동기처럼 작성하도록 도와줍니다.
async & await 사용시 장점
- 가독성 향상 - 비동기코드를 동기처럼 작성하기 때문에 콜백지옥에서 벗어날 수 있다.
- throw 키워드와 함께 사용하면 에러처리가 편리하다.
- 실수 방지 - completionHandler를 사용했을 때 개발자가 실수로 completion을 하지 않는 것을 방지할 수 있다.
- 테스트 용이 - 테스트코드를 작성할 때 Swift Testing과 사용하여 편리하게 사용 가능하다.
🙋🏻♂️ 기타 사항
- Tip 개발서비스 비용에 대해서는 모니터링을 중요시 하자. (미사용 서비스 비용청구 이유, 비용 산정 이유, 히스토리 등등)
- iOS에서 기본 일기앱이 있는데 해당 앱을 공유기능이 없어서 공유가 가능한 앱을 SwiftUI로 구현해봐야겠다.