Swift Testing

새로운 프레임워크인 Swift Testing에는 Swift 코드를 쉽게 테스트할 수 있게 해주는 표현적이며 직관적인 API가 포함되어 있습니다.

명확하고 표현적인 API

Swift Testing은 매크로를 사용하여 빌드된, 명확하고 표현적인 API를 포함하고 있습니다. 따라서 간단한 코드로 복잡한 동작을 선언할 수 있습니다. #expect API는 Swift 표현식 및 연산자를 사용하며, 평가된 값을 캡처하므로 테스트에 실패할 경우 문제의 원인을 빠르게 파악할 수 있습니다. 매개변수화된 테스트를 사용하면 하나의 값 시퀀스에 동일한 테스트를 실행하므로 더 적은 분량의 코드를 작성해도 됩니다. 또한 모든 테스트는 Swift 동시성과 매끄럽게 통합되며 기본적으로 병렬 실행됩니다.

@Test("Continents mentioned in videos", arguments: [
    "A Beach",
    "By the Lake",
    "Camping in the Woods"
])
func mentionedContinents(videoName: String) async throws {
    let videoLibrary = try await VideoLibrary()
    let video = try #require(await videoLibrary.video(named: videoName))
    #expect(video.mentionedContinents.count <= 3)
}

맞춤형 테스트 동작

코드에 명시된 특성을 사용하여 테스트 또는 테스트 모음의 동작을 맞춤화할 수 있습니다. 테스트 실행 기기를 정하거나 특정 운영 체제 버전으로 테스트를 제한하는 등 특성을 통해 테스트의 런타임 조건을 설명할 수 있습니다. 또한 특성으로 테스트의 실행 시간 제한을 지정하여 지속적 통합을 효과적으로 사용할 수도 있습니다.

@Test(.enabled(if: AppFeatures.isCommentingEnabled))
func videoCommenting() async throws {
    let video = try #require(await videoLibrary.video(named: "A Beach"))
    #expect(video.comments.contains("So picturesque!"))
}

쉽고 유연한 구성

Swift Testing은 테스트를 체계화할 수 있는 다양한 방법을 제공합니다. 그룹 및 하위 그룹의 계층 구조를 사용하여 관련 테스트를 구조화해 보세요. 특정 기기를 타겟팅하는 테스트, 특정 모듈을 사용하는 테스트 등 테스트 모음 전반에서 공통 특징을 가진 테스트에 태그를 적용하여 유연하게 관리, 편집, 실행해 보세요. 수행 중인 테스트를 한눈에 파악할 수 있도록 테스트에 설명적인 이름을 지정할 수도 있습니다.

@Test("Check video metadata",
      .tags(.metadata))
func videoMetadata() {
    let video = Video(fileName: "By the Lake.mov")
    let expectedMetadata = Metadata(duration: .seconds(90))
    #expect(video.metadata == expectedMetadata)
}

강력한 도구

모든 Xcode 작업 흐름에 테스트 및 테스트 모음을 사용할 수 있습니다. 테스트 결과가 인라인에 상세하게 표시되므로 테스트 및 결과 정보를 나란히 볼 수 있습니다. 매개변수화된 테스트에서 코드의 동작을 디버깅하기 위해 특정 인수를 다시 실행할 수도 있습니다. 병렬 연산을 활용하고 상세한 결과 요약 정보를 받기 위해 Xcode Cloud에서 테스트를 실행해 보세요. Swift Package Manager를 사용하여 명령어 라인에서 테스트를 직접 실행할 수도 있습니다.

오픈 소스, 크로스 플랫폼

Swift Testing은 Apple 플랫폼, Linux, Windows를 포함하여 Swift에서 지원하는 모든 주요 플랫폼에서 작동합니다. 따라서 플랫폼 간에 이동할 때 테스트의 동작이 더욱 일관적입니다. Swift Testing은 오픈 소스로 개발되었으며 개발자 커뮤니티가 신기능 개발에 기여했습니다. 전 세계의 여러 훌륭한 아이디어가 Swift 테스트 환경 발전의 미래를 엽니다.

XCTest와의 호환성

XCTest를 사용하여 작성한 테스트가 있는 경우 Swift Testing으로 작성한 최신 테스트와 나란히 실행해 보세요. 원하는 속도로 테스트를 증분 마이그레이션할 수 있습니다.

시작하기

Xcode 16 베타를 다운로드하고 Swift 코드 테스트에 Swift Testing 프레임워크를 활용해 보세요.

Xcode 다운로드하기