macOS → Linux로의 크로스 컴파일링을 위한 SDK
설치
swift sdk install ~/preview-static-swift-linux-0.0.1.tar.gz
크로스 컴파일
swift build --swift-sdk aarch64-swift-linux-musl
개발 프로세스
Foundation은 여러 앱에서 필수적인 API를 제공하는 핵심 프레임워크
OS X 시작부터 있던 가장 오래된 프레임워크들 중 하나
Swift가 오픈소스가 되었을 때 이 프레임워크가 모든 플랫폼에 유용하기때문에 swift-corelibs-foundation 프로젝트로 별도 구현을 제공
그 이후 언어가 발전하면서 단일 구현체를 쓸 수 있게 되면서 Swift로 완전히 재작성하는 Swift-Foundation 프로젝트를 시작
지난 가을부터 iOS와 macOS에 새로운 foundation이 들어갔다.
오픈소스기 떄문에 커뮤니티에서 기여할 수 있고, 공개된 진화 프로세스를 거치게 된다.
올해부터 regex지원도 추가
쉽게 쓸 수 있고, 표현력이 풍부하고, 유연하고 확장 가능하다.
매크로 등의 모던 Swift 기능들을 사용하고, 동시성과도 매끄럽게 연결된다.
오픈소스로 개발되어 크로스 플랫폼을 염두에 두고 만들어졌다.
Xcode와 VSCode 등 여러 IDE와 통합을 위해 디자인 되었다.
생태계의 공식이자 기본 테스팅 솔루션이 되는 비전을 가지고 있고 이 비전은 swift-evolution에 문서화되어있다.
예시
테스트 함수 선언
// Swift Testing
import Testing
@Test
func rating() {
let video = Video(id: 2, name: "Mystery Creek")
#expect(video.rating == "⭐️⭐️⭐️⭐️")
}
테스트 이름 커스텀
// Swift Testing
import Testing
@Test("Recognized rating")
func rating() {
let video = Video(id: 2, name: "Mystery Creek")
#expect(video.rating == "⭐️⭐️⭐️⭐️")
}
태그를 통해서 테스트를 구조화하고 필터링할 수 있다.
// Swift Testing
import Testing
@Test("Recognized rating",
.tags(.critical))
func rating() {
let video = Video(id: 2, name: "Mystery Creek")
#expect(video.rating == "⭐️⭐️⭐️⭐️")
}
여러가지 매개변수를 지정해서 다양한 입력에 대해서 테스트를 돌려볼 수도 있다.
// Swift Testing
import Testing
@Test("Recognized rating",
.tags(.critical),
arguments: [
(1, "A Beach", "⭐️⭐️⭐️⭐️⭐️"),
(2, "Mystery Creek", "⭐️⭐️⭐️⭐️"),
])
func rating(videoId: Int, videoName: String, expectedRating: String) {
let video = Video(id: videoId, name: videoName)
#expect(video.rating == expectedRating)
}
더 자세한 내용은 Meet Swift Testing과 Go Further with Swift Testing 세션 참조