Objective-C 트랙에서 테스트하기

Exercism에서 Objective-C 연습 문제를 테스트하는 방법을 알아봐요


Exercism은 테스트 파일만 내려받아요. 헤더 파일과 연습 문제에 해당하는 소스 파일은 직접 만들어야 해요. 테스트 파일, 헤더 파일(.h), 소스 파일(.m)로 Xcode 프로젝트 파일을 생성해야 해요. 또는 아래에 설명한 테스트 러너 유틸리티를 사용할 수도 있어요.

Xcode에서 프로젝트 만들기

  • Xcode를 실행하고 새 프로젝트를 만들어요.
  • OS X > Application을 선택한 다음 Command Line Tool을 선택해요.
  • Next를 클릭하고 프로젝트 이름은 ExerciseName으로 짓는 걸 권장해요.
  • Next를 클릭하고 프로젝트를 exercism의 연습 문제 디렉터리에 저장해요.
  • 프로젝트가 만들어졌으면 Editor > Add Target을 클릭해요.
  • OS X > Test를 선택하고 OS X Unit Testing Bundle을 선택해요.
  • 타깃 이름은 ExerciseName Tests로 지정해요.
  • 왼쪽 창(내비게이터라고 해요)에서 Project navigator를 열고 ExerciseName Tests 폴더를 펼친 다음 ExerciseName_Tests.m 파일을 열어요.
  • 내용을 exercism에서 받은 테스트 파일로 바꿔요.
  • 그 파일에서 "test_suite"를 모두 "ExerciseName_Tests"로 바꿔요.
  • 오른쪽 창의 File Template library로 이동하거나(또는 CTRL+OPTION+CMD+1을 사용해요) Cocoa Class 템플릿을 Project navigator의 ExerciseName_Tests 폴더로 끌어다 놓아요.
  • 이름은 ExerciseName으로 지정하고 타깃은 ExerciseName Tests로 선택해요.
  • 이제 ExerciseName_Tests 디렉터리에 ExerciseName.h와 ExerciseName.m 두 개의 새 파일이 생겼어요.
  • Project navigator에서 프로젝트를 클릭해요.
  • targets 목록에서 ExerciseName Tests를 클릭해요.
  • 편집기 내비게이션에서 Build Phases를 선택해요.
  • .m 파일 두 개가 모두 compile sources 목록에 들어 있는지 확인해요.
  • CMD+5를 눌러 Test navigator로 이동해요.
  • ExerciseName Tests라는 번들을 마우스 오른쪽 버튼으로 클릭하고 Enable ExerciseName_Tests를 클릭해요.
  • Test navigator에서 번들 위로 마우스를 올리면 나타나는 오른쪽을 가리키는 삼각형을 클릭하거나 CMD+U를 눌러 테스트를 실행해요.

테스트는 Xcode를 통해 실행돼요.

참고: "No visible @interface for ExerciseName declares the selector ExerciseSelector,"라는 오류가 나타난다면 단계는 올바르게 따른 것이지만, 헤더/구현 파일에 아무것도 작성하지 않은 거예요. .h 파일에 메서드를 선언하고 .m 파일에 정의하면, 테스트가 연습 문제를 완성하는 데 도움이 되는 더 쓸모 있는 오류를 내놓을 거예요. 더 자세한 내용은 Objective-C 클래스 입문을 읽어보세요.

테스트 러너

프로젝트 파일을 직접 생성하는 대신, 루비로 작성된 테스트 러너 유틸리티인 objc를 사용할 수 있어요. 이 유틸리티는 테스트 파일, 헤더 파일, 소스 파일이 포함된 프로젝트 파일을 대신 만들어 줘요.

$ gem install objc

다음 명령으로 테스트를 실행해요.

$ objc -x ExerciseName

(-x/--xcodebuild 플래그에 주목해요. 이 플래그는 xctool 대신 xcodebuild를 사용하도록 지정해요. xctool은 최신 Xcode 릴리스에서는 작동하지 않아요.)

objc 유틸리티는 연습 문제 이름을 사용해 테스트 파일 ExerciseNameTest.m, 헤더 파일 ExerciseName.h, 소스 파일 ExerciseName.m을 찾아요. 이 파일들은 임시 Xcode 프로젝트에 삽입되고, 그다음 xcodebuild로 프로젝트의 테스트를 실행해요.

objc를 사용하면 이 연습 문제들을 완료할 때 Xcode를 실행할 필요가 없지만, 명령줄에서 받는 오류 메시지와 피드백은 Xcode 사용자 인터페이스만큼 명확하지는 않아요.