2014-06-18 5 views
6

(테스트) 대상 설정이나 테스트 .pch 파일에 매크로가 정의되어 전체 응용 프로그램에 전달되도록 할 수 있습니까?
또는 테스트를 실행중인 경우 코드에서 이미 확인할 수있는 매크로가 있습니까?xctest - 전 처리기 매크로

예 :

#if TEST=1 
    // do something 
#else 
    // do something else 
#endif 

난이, 몇 가지 코드를 생략하는 것입니다 (주요 응용 프로그램에 .PCH 때마다 내가 테스트를 실행을 정의 #을 변경하지 않고) 테스트시 등을 주장 할 이유 .

감사합니다.

+1

이 문제에 대해 더 알고 싶습니까? 내 코드에 테스트 픽스처를 추가하고 싶습니다. 하지만 프로덕션 코드에 나타나지 않도록하십시오. 일부 확장 기능과 도우미 기능. 그런 종류의 것? – ahalls

+0

나는 개인적으로 여기에 설명 된 것과 비슷한 것을 사용했다. http://stackoverflow.com/a/15725328/727817. 또 다른 좋은 옵션은 테스트 용으로 새로운 빌드 구성을 설정하는 것입니다. http://stackoverflow.com/a/14718914/727817 –

답변

3

Objective-C와 매우 비슷한 방식으로이 작업을 수행 할 수 있습니다. 신속한 컴파일러는 -D 명령 스위치를 사용합니다. 이를 테스트에 적용하기 위해 필자가 테스트 대상 빌드 설정에서만 원하는 리터럴을 정의했습니다.

방법 :

Build settings for the Test Target -> 
     Swift Compiler Custom Flags -> 
     -DTEST (yes, including the -D prefix) 

이 코드를 활성화는 :

// Objective-C and Swift 
#if TEST 
// Test only code version code 
#else 
// App only code 
#endif 

나는 transitioning to swift에이 문서에서 해결책을 발견.

+0

이 방법은 테스트 대상의 .pch 안에'# define ' 테스트 클래스에만 영향을 미치지 만 실제 앱 클래스에는 영향을주지 않습니다. 나는 'Other C Flags'를 사용하여 테스트했는데, 아마 다른 것일 수도 있습니다. –