Swift Testing 테스트는 통과한 것처럼 보이는데 XCTest 단언이 실패를 알리지 않거나, 경고만 표시되나요?
가장 빠른 해결 순서는 호출 위치 확인, 도구 체인과 swift-tools-version 점검, 상호 운용 모드 확인입니다. Swift 6.4는 두 테스트 프레임워크의 점진적 상호 운용을 지원하지만, 모든 테스트 동작이 서로 바뀌는 것은 아닙니다. 기존 테스트를 먼저 다시 쓰지 말고, 공식 릴리스 안내와 마이그레이션 설명에 맞춰 원인을 좁히세요.
이 안내는 기존 XCTest 과제와 새 Swift Testing 테스트를 한 프로젝트에서 실행하는 학생에게 적합합니다.
Swift 도구 체인이나 패키지 설정을 바꾼 뒤 결과가 달라진 초보자도 확인할 수 있습니다.
엑스코드에서 테스트 보고서가 예상과 다른 경우, 코드 문제와 실행 환경 문제를 구분하는 데 도움이 됩니다.
증상에 맞춰 첫 확인 지점 고르기
먼저 화면에 보이는 결과를 세 가지로 나누세요. 단언이 실패했는데 실패 표시가 없으면 테스트 함수와 보조 함수 사이의 프레임워크 경계를 살펴봅니다. 경고가 나와도 테스트가 실행되면 경고 내용과 상호 운용 설정을 확인합니다. 테스트가 아예 실행되지 않거나 빌드가 멈춘다면 상호 운용 문제로 단정하지 말고 테스트 대상과 빌드 결과부터 확인하세요.
| 관찰한 결과 | 먼저 확인할 곳 | 다음 판단 |
|---|---|---|
| Swift Testing 테스트가 XCTest 단언 보조 함수를 호출함 | 보조 함수 안의 단언 종류와 테스트 보고서 | 프레임워크를 가로지른 단언 문제가 기록됐는지 확인합니다. |
| 경고나 현대화 안내가 표시됨 | 사용 중인 Swift 도구 체인과 패키지 설정 | 경고가 상호 운용 모드와 관련 있는지 공식 설명과 대조합니다. |
| 테스트가 시작되지 않거나 빌드가 실패함 | 선택한 테스트 대상과 빌드 보고서 | 테스트 실행 문제인지 소스 코드 컴파일 문제인지 나눕니다. |
Swift Testing과 XCTest를 한 테스트 파일에 함께 넣어도 되나요?
같은 프로젝트에서 두 프레임워크를 함께 사용할 수 있습니다. 다만 같은 파일에 두 종류의 테스트를 섞어야 하는 것은 아닙니다. 초보자는 먼저 같은 테스트 대상 안에서 파일을 나누고, 각 테스트가 실제로 검색되고 실행되는지 확인하는 편이 원인을 찾기 쉽습니다. 프레임워크 간 단언 사용의 범위는 공식 상호 운용 제안에서 확인하세요.
단언을 호출한 위치부터 좁히기
Swift Testing 테스트 함수에서 XCTest의 XCTAssert를 직접 쓰거나, 내부에서 XCTAssert를 호출하는 예전 보조 함수를 부르는지 확인하세요. 테스트 함수만 살펴보면 단언의 실제 호출 위치를 놓칠 수 있습니다. 테스트 보고서에 프레임워크 간 호출과 관련된 경고나 문제가 남았는지도 함께 기록하세요.
Swift Testing에서 XCTAssert가 실패했는데 오류가 표시되지 않으면 어떻게 하나요?
테스트가 Swift Testing으로 선언되어 있는지 확인한 다음, 단언이 직접 호출됐는지 보조 함수 안에서 호출됐는지 찾아보세요. 그 뒤 보고서에 상호 운용 관련 기록이 있는지 확인합니다. 모드에 따라 문제가 보고되는 방식이 달라질 수 있으므로, 실패가 보이지 않는다는 이유만으로 단언을 바꾸거나 검사를 제거하지 마세요. 관련 동작은 마이그레이션 안내와 대조합니다.
반대로 XCTest 테스트에서 #expect를 썼다면 그 호출 위치와 테스트 보고서를 같은 방식으로 추적하세요. Swift 6.4의 지원은 두 프레임워크 사이의 점진적 상호 운용을 위한 것입니다. 테스트 실행 방식이나 모든 API가 서로 완전히 같다는 뜻은 아닙니다. 컴파일 오류가 났다면 단언 보고 문제보다 먼저, 해당 테스트 대상에서 사용한 문법과 도구 체인이 맞는지 확인해야 합니다.
경고 문구만 보고 프로젝트 전체의 단언을 한꺼번에 교체하지 마세요. 호출 위치와 보고서 내용을 보존해야 변경 전후의 원인을 비교할 수 있습니다.
도구 체인과 패키지 규칙 대조하기
도구 체인은 테스트를 컴파일하고 실행하는 Swift와 엑스코드의 도구 묶음입니다. swift-tools-version은 패키지가 사용할 도구 규칙의 버전을 나타냅니다. 수업 교재의 판본이 다르면 과제 지시와 실행 규칙이 어긋날 수 있는 것처럼, 두 설정이 달라지면 기본 동작을 다르게 해석할 수 있습니다. 패키지 선언의 의미는 패키지 설명 문서에서 확인하세요.
| 확인 항목 | 기록할 내용 | 확인 이유 |
|---|---|---|
| Swift 도구 체인 | 실제로 선택한 Swift와 엑스코드 버전 | 설치된 도구와 기대한 도구가 같은지 구분합니다. |
| 패키지 설정 | Package.swift의 swift-tools-version |
패키지에 적용되는 도구 규칙을 확인합니다. |
| 테스트 대상 | 문제가 난 테스트의 대상 이름과 파일 | 코드가 어느 실행 대상에 포함됐는지 확인합니다. |
| 상호 운용 모드 | 사용 중인 모드와 지정 위치 | 경고나 오류가 설정 변경과 함께 달라졌는지 기록합니다. |
엑스코드에서 테스트 보고서를 확인하려면 어디를 봐야 하나요?
문제가 난 테스트 대상이 실제 실행 목록에 포함됐는지 먼저 확인하고, 이어서 해당 테스트의 실행 결과와 실패 내용을 살펴보세요. 테스트가 건너뛰어졌다면 단언 오류와 다른 문제입니다. 빌드가 실패했다면 테스트 결과를 판단하기 전에 컴파일 오류를 해결해야 합니다. 보고서 해석 방법은 테스트 실행 및 결과 설명과 테스트 안내를 참고하세요.
상호 운용 모드 변경 조건 판단하기
none, limited, complete, strict는 프레임워크 사이의 상호 운용 범위와 문제 보고에 영향을 주는 모드입니다. 이름만 보고 가장 관대한 설정을 고르면 안 됩니다. 특히 빨간 오류 표시를 없애려고 범위를 넓히면, 실제로 확인해야 할 문제가 가려질 수 있습니다. 각 모드의 정확한 동작과 설정 방법은 마이그레이션 문서에서 현재 도구 체인에 해당하는 설명을 확인하세요.
- 문제가 상호 운용 단언에만 나타나고 공식 문서의 모드 설명과 일치한다면, 현재 설정을 기록한 뒤 해당 모드의 의도된 동작인지 확인합니다.
- 문제가 난 테스트와 모드의 관련성이 불분명하다면, 모드를 바꾸지 말고 도구 체인, 패키지 버전 선언, 호출 위치를 먼저 비교합니다.
- 모드 설정을 바꾼 뒤 보고 수준만 달라졌다면, 이를 코드 수정으로 해결된 것으로 보지 않습니다. 실제 실패 테스트가 계속 감지되는지 다시 검증합니다.
- 환경 변수를 통해 설정했다면, 변수 이름과 허용 값을 추측하지 말고 현재 공식 문서에 적힌 표기를 그대로 대조합니다. 적용 범위와 실행 환경도 함께 기록합니다.
엑스코드에서 #expect를 쓴 XCTest 테스트에 문제가 생기면 어떻게 하나요?
먼저 해당 테스트가 실제로 실행됐는지 확인하고, 보고서에서 단언 실패와 빌드 또는 검색 문제를 구분하세요. 다음으로 단언이 놓인 테스트 함수와 선택한 상호 운용 모드를 비교합니다. 모드에 대한 공식 설명과 증상이 맞지 않으면 프로젝트 설정을 바꾸기 전에 최소 재현 테스트를 만들어 확인하세요.
안전한 점검 순서와 재현 기록
아래 순서를 따라가면 코드 변경과 도구 설정 변경이 한꺼번에 섞이는 일을 줄일 수 있습니다.
- [ ] 실패한 테스트의 이름과 테스트 대상을 기록합니다.
- [ ] 테스트가 Swift Testing인지 XCTest인지 확인합니다.
- [ ] 실패하지 않는 단언의 호출 위치를 찾고, 보조 함수 안의 단언도 살펴봅니다.
- [ ] 도구 체인과 패키지의
swift-tools-version을 기록합니다. - [ ] 상호 운용 모드와 설정 위치를 확인합니다.
- [ ] 문제가 난 테스트가 보고서에 실행, 건너뜀, 실패 중 무엇으로 나타나는지 확인합니다.
- [ ] 설정을 바꿨다면 성공이 예상되는 테스트와 실패가 예상되는 테스트를 각각 실행해 보고서를 비교합니다.
Swift 6.4로 바꾼 뒤 모드를 어떻게 확인하나요?
먼저 실제로 실행하는 Swift 도구 체인과 패키지의 swift-tools-version을 확인하세요. 그다음 공식 마이그레이션 설명에서 해당 조합의 모드와 환경 변수 설정을 찾아 현재 프로젝트 값과 비교합니다. 기본 동작은 도구 체인과 패키지 설정에 따라 달라질 수 있으므로, 다른 프로젝트의 설정을 그대로 복사하지 말고 변경 전후의 결과를 기록하세요.
마지막 검증은 최소 재현으로 진행합니다. 성공해야 하는 테스트가 통과하는지, 실패해야 하는 테스트가 실제로 실패로 보고되는지 확인하세요. 한쪽만 확인하면 단언 문제가 해결된 것인지, 오류 표시만 달라진 것인지 구분하기 어렵습니다. 엑스코드가 테스트를 시작하지 못하거나 프로젝트가 빌드되지 않는다면, 상호 운용 모드보다 테스트 대상과 빌드 설정을 먼저 살펴보세요. 단위 테스트와 화면 동작을 확인하는 UI 테스트도 실행 대상이 다를 수 있으니, 보고서에서 선택된 테스트 종류를 확인하는 선에서 구분하면 됩니다.
현재 작업 환경에 맞춰 다음 단계 정하기
이 점검은 학생 프로젝트의 테스트 코드와 도구 설정을 나눠 확인하는 방법입니다. 하지만 수업에 필요한 엑스코드 프로젝트를 실행할 맥이 없다면, 윈도 컴퓨터만으로는 맥 전용 도구 체인을 직접 실행할 수 없고 학교 컴퓨터는 사용 시간이나 설치 권한이 제한될 수 있습니다. 반대로 장기간 계속 무거운 작업을 하거나 특정 물리 장치에 연결해야 한다면, 원격 환경보다 직접 사용할 기기가 더 적합할 수 있습니다.
기존 컴퓨터에서 해결할 문제인지, 맥 환경이 필요한 과제인지 먼저 구분하세요. 단기간에 프로젝트를 실행하고 같은 테스트를 재현할 맥 환경이 필요하다면 RUVCLOUD 요금과 이용 조건을 확인해 학교 기기나 개인 기기와 비교할 수 있습니다. 국내 이용 옵션은 한국 이용 안내에서 살펴보세요. 어느 환경을 선택하든, 같은 성공 테스트와 실패 테스트를 다시 실행해 결과를 확인하는 것이 마지막 점검입니다.
마지막 업데이트: 2026년 10월 10일. Swift 6.4 릴리스 안내와 공식 마이그레이션, 패키지 설명, 엑스코드 테스트 문서를 기준으로 확인했습니다.