Swift Testing 아니면 XCTest? 2026 초보자 선택 안내
애플은 새 프로젝트에서 Swift Testing 단위 시험과 XCTest 화면 시험을 함께 선택할 수 있도록 안내하고 있습니다. 애플의 프로젝트 시험 안내에 따르면, 새 로직은 Swift Testing으로 작성하고 화면 동작은 XCTest로 확인하는 구성이 가장 안전합니다. 기존 XCTest 과제는 한꺼번에 바꾸지 말고 두 도구를 같은 시험 대상에 남겨 둔 뒤 조금씩 옮기면 됩니다.
마지막 업데이트: 2026년 9월 18일. 버전과 기능 범위는 엑스코드 시스템 요구 사항, Swift 6.4 공개 내용, 애플의 시험 이전 안내를 기준으로 확인했습니다.
이 글을 읽어야 하는 학습자
처음 @Test, #expect, XCTestCase를 본 Swift 초보자에게 맞는 글입니다. 새 SwiftUI 프로젝트를 만들려는 학생도 대상입니다.
오래된 수업 과제나 기존 저장소를 이어받았거나, 윈도우만 사용해서 어디까지 연습할 수 있는지 판단해야 하는 학습자도 읽어 볼 수 있습니다.
시작점: Swift Testing 아니면 XCTest, 새 프로젝트의 선택 기준
새 프로젝트에서 순수한 로직을 시험한다면 Swift Testing을 고르는 편이 좋습니다. 화면을 누르고 이동하는 흐름을 자동으로 확인해야 한다면 XCTest를 유지해야 합니다. 둘은 완전히 배타적인 선택지가 아닙니다.
시험은 제출 전 자동 검사와 비슷합니다. 계산 결과가 맞는지 확인하는 것은 로직 검사입니다. 화면에서 버튼을 누르고 다음 화면이 열리는지 확인하는 것은 실제 사용 흐름 검사입니다.
| 확인할 대상 | 우선 선택할 도구 | 초보자에게 맞는 이유 |
|---|---|---|
| 계산, 데이터 변환, 상태 변경 | Swift Testing | 코드가 짧고 시험 의도가 읽기 쉽습니다 |
| 같은 로직을 여러 입력값으로 확인 | Swift Testing | 매개 변수 시험을 구성하기 좋습니다 |
| 화면 누르기, 입력, 화면 이동 | XCTest | 화면 자동화는 계속 XCTest가 담당합니다 |
| 오래된 수업 과제 | 기존 XCTest | 제출 환경과 선생님의 기준을 보존할 수 있습니다 |
| 새 기능을 기존 저장소에 추가 | Swift Testing 우선 | 기존 시험과 함께 점진적으로 넣을 수 있습니다 |
애플은 Swift Testing을 새 단위 시험과 통합 시험에 사용할 수 있다고 설명합니다. 반면 화면 자동화와 관련된 기존 XCTest 흐름은 그대로 필요합니다. 애플의 Swift Testing 문서도 두 영역을 같은 방식으로 합치라고 안내하지 않습니다.
가장 작은 단위 시험부터 시작하기
아래 함수는 두 수를 더합니다. @Test는 이 함수가 시험이라는 표시입니다. #expect는 실제 결과와 예상 결과를 비교하는 판정 조건입니다.
import Testing
func add(_ first: Int, _ second: Int) -> Int {
first + second
}
@Test
func addingNumbersWorks() {
#expect(add(2, 3) == 5)
}
여기서 숫자 자체가 중요한 것이 아닙니다. 과제 채점표에서 “더한 결과가 맞는가?”를 자동으로 확인하는 구조가 핵심입니다. #expect의 동작과 표현 방식은 애플의 기대 조건 문서에서 확인할 수 있습니다.
새 SwiftUI 앱과 기존 XCTest 과제는 어떻게 나눌까
새 SwiftUI 앱을 만드는 학생은 데이터 처리와 화면 상태 계산을 Swift Testing으로 시작하면 됩니다. 코드가 읽기 쉽고, 같은 시험을 여러 입력값에 적용하기 쉽다는 점이 선택 이유입니다. 단순히 “더 최신이라서 빠르다”고 단정할 근거로 선택하면 안 됩니다.
화면 시험은 XCTest에 남깁니다.
import XCTest
final class AppScreenTests: XCTestCase {
func testMainScreenShowsTitle() {
let app = XCUIApplication()
app.launch()
XCTAssertTrue(app.staticTexts["Home"].exists)
}
}
첫 코드는 함수의 답을 검사합니다. 두 번째 코드는 앱을 실행한 뒤 화면에 원하는 글자가 나타나는지 검사합니다. 전자는 제출물의 계산 규칙을 보는 검사이고, 후자는 사람이 앱을 사용하는 순서를 흉내 내는 검사입니다.
기존 과제라면 새 도구를 쓰고 싶은 마음보다 제출 조건이 먼저입니다. 선생님이 XCTest를 요구하거나, 수업에서 제공한 시험 대상과 실행 방법이 XCTest를 기준으로 되어 있다면 그대로 유지해야 합니다. 마감 직전에 전부 바꾸면 시험 이름, 파일 위치, 실행 결과가 달라질 수 있습니다.
Swift Testing과 XCTest는 같은 시험 대상 안에서 함께 사용할 수 있습니다. 애플은 기존 시험을 한 번에 바꾸지 않고 새 시험부터 점진적으로 옮기는 방식을 설명합니다. 애플의 시험 이전 발표 자료를 참고한 뒤 진행하는 것이 안전합니다.
매개 변수 시험은 언제 유용할까
같은 규칙을 여러 입력값으로 확인할 때 매개 변수 시험이 편리합니다. 예를 들어 빈 이름, 일반적인 이름, 긴 이름을 같은 시험에 넣는 방식입니다. 이는 한 문제를 여러 답안으로 채점하는 것과 비슷합니다.
다만 수업에서 특정 XCTest 형식을 요구한다면, 새 문법의 편리함보다 과제 실행 환경을 우선해야 합니다. 새 기능을 배우는 연습용 프로젝트와 제출용 프로젝트를 분리하면 실수 범위를 줄일 수 있습니다.
첫 단계: 기존 저장소를 받은 학생의 선택
그룹 프로젝트나 오래된 저장소를 받았다면 먼저 시험 폴더를 찾습니다. 시험 계획, 공통 보조 함수, 실행 대상, 실패 처리 방식을 차례로 확인합니다. 개인 취향만으로 모든 판정 함수를 바꾸면 안 됩니다.
특히 상호 운용은 “파일이 함께 보인다”는 뜻만으로 충분하지 않습니다. 같은 시험을 이전과 이후에 모두 실행하고, 실패한 항목이 같은 방식으로 표시되는지 비교해야 합니다. 실패가 오류가 아니라 경고처럼 보이면 통과한 것으로 오해할 수 있습니다.
다음 조건 중 하나라도 해당하면 이전을 멈추고 기존 XCTest를 유지하는 편이 낫습니다.
- 제출 마감이 가까운 경우
- 기존 시험 기준선이 아직 모두 통과하지 않은 경우
- 선생님이 XCTest 사용을 명확히 요구한 경우
- 저장소의 시험 계획이 새 방식과 맞는지 확인하지 못한 경우
반대로 새 기능을 연습하는 별도 가지를 만들었고 기존 시험이 통과한다면, 새 로직부터 Swift Testing으로 추가할 수 있습니다. 시험 실행과 결과 해석 안내를 보면서 성공과 실패가 정확히 기록되는지 확인해야 합니다.
맥이 없으면 Swift Testing을 어디까지 연습할 수 있을까
Swift Testing은 Swift가 지원되는 주요 플랫폼에서 순수한 Swift 코드와 패키지 시험을 연습하는 데 사용할 수 있습니다. Swift 패키지 시험 안내는 패키지 기반 학습의 출발점으로 참고할 수 있습니다.
윈도우만 사용하는 학생은 계산 함수, 문자열 처리, 자료 구조, 일부 패키지 코드를 먼저 연습할 수 있습니다. 그러나 이것이 아이오에스 화면, 시뮬레이터, XCTest 화면 시험까지 대신한다는 뜻은 아닙니다.
아이오에스 프로젝트를 열고 SwiftUI 화면을 만들거나 화면 자동화를 실행해야 하는 시점에는 엑스코드와 맥이 필요합니다. 학교 장비, 빌린 기기, 원격 맥 가운데 하나를 준비해야 합니다. 맥 없이 Swift와 아이오에스를 배우는 이중 학습 경로도 이 구간을 나누어 설명합니다.
원격 환경을 쓰는 학생은 작은 시험 저장소 하나를 정해 코드 동기화, 시험 실행, 결과 저장이 이어지는지 먼저 확인해야 합니다. 처음부터 큰 과제를 옮기지 말고, 단위 시험 하나와 화면 시험 하나를 각각 실행한 뒤 과제 프로젝트로 넓히는 편이 안전합니다.
제출 전 선택표와 실행 순서
아래 조건 분기를 먼저 적용하면 선택이 단순해집니다.
- 새 프로젝트의 계산과 데이터 처리라면 Swift Testing을 선택합니다.
- 화면 누르기와 화면 이동이라면 XCTest를 선택합니다.
- 기존 XCTest 과제라면 그대로 실행한 뒤, 새 기능만 Swift Testing으로 추가합니다.
- 윈도우에서 순수 Swift만 연습한다면 Swift Testing을 먼저 사용합니다.
- 시뮬레이터나 아이오에스 화면을 시험해야 한다면 학교 맥이나 원격 맥으로 이동합니다.
- 시험 결과가 이전과 다르게 표시되면 이전을 되돌리고 원인을 확인합니다.
| 학습 상황 | 권장 구성 | 먼저 확인할 항목 |
|---|---|---|
| 새 SwiftUI 프로젝트 | Swift Testing과 XCTest 병행 | 로직 시험과 화면 시험의 대상 |
| 기존 XCTest 수업 | XCTest 유지, 새 코드만 점진 추가 | 제출 형식과 시험 계획 |
| 그룹 저장소 인수 | 기존 구조 확인 후 선택 | 공통 함수와 실패 결과 |
| 윈도우에서 사전 학습 | Swift 패키지와 순수 로직 | 코드 동기화와 패키지 실행 |
| 아이오에스 화면 과제 | 엑스코드가 있는 맥 사용 | 시뮬레이터 실행과 화면 결과 |
마지막으로 작은 프로젝트에서 다음 순서를 실행합니다.
첫째, 계산 함수 하나를 Swift Testing으로 검사합니다.
둘째, 시험을 일부러 실패시켜 실패 결과가 표시되는지 확인합니다.
셋째, XCTest로 화면의 글자나 버튼을 확인합니다.
넷째, 두 시험을 같은 시험 대상에서 실행합니다.
다섯째, 과제 제출 환경에서 다시 실행하고 결과를 저장합니다.
현재 컴퓨터가 윈도우라면 순수 Swift 학습에는 큰 문제가 없을 수 있습니다. 하지만 화면 시험 단계에서 가상 맥을 무리하게 구성하면 엑스코드 버전, 시뮬레이터, 권한 문제를 따로 해결해야 합니다. 짧은 과제나 시험 검증만 필요하다면 맥 미니 대여 요금 안내를 확인해 실제 원격 맥에서 프로젝트를 열고 결과를 재현하는 편이 더 단순할 수 있습니다.
자체 컴퓨터를 준비하는 선택은 장기간 매일 개발하고 물리 기기 연결이 필요한 학생에게 맞습니다. 반면 윈도우 환경은 초기 비용을 줄일 수 있지만 아이오에스 화면 시험을 바로 실행할 수 없고, 가상 환경은 설정과 호환성 확인이 추가로 필요합니다. 학교 장비는 무료일 수 있어도 사용 시간과 설치 권한이 제한됩니다. 단기간 과제 검증이라면 SFTPMAC의 원격 맥을 임시 시험 환경으로 사용한 뒤, 학습 기간이 길어질 때 장기 장비 구매 여부를 다시 판단하는 방식이 현실적입니다.
결론은 세 줄로 정리됩니다. 새 로직은 Swift Testing으로 작성합니다. 화면 시험은 XCTest로 남깁니다. 기존 XCTest 과제는 무리하게 전부 바꾸지 말고 두 도구를 함께 실행하면서 단계적으로 이전합니다.