2012-07-20 5 views
1

단위 테스트를 실행할 때 로깅을 비활성화하려면 테스트 속도가 크게 향상 될 수 있도록 로깅을 비활성화해야합니다 (~ 20s vs 0.374s, 지금은 몇 가지 테스트 만 있지만 큰 테스트 코드의 루프). 단위 테스트 목적 C 코드

#define UNIT_TESTING 

그리고 코드

테스트 할 내가 최초 매크로 정의되어 있는지 확인 :

#ifndef UNIT_TESTING 
NSLog("whatever log"); 
#endif 

는 I는 다음과 같이, 테스트 코드 헤더 매크로를 정의하려 하지만 그것은 작동하지 않는 것 같아요, 만약 내가 테스트 코드의 테스트 코드 헤더를 가져 오지 않았기 때문입니다. 이것은 단위 테스트가 아닌 경우에도 로그가 인쇄되지 않기 때문에 수행 할 수 없습니다.

나는 비교적 객관적인 C이고 Java 배경에서 왔습니다. 헤더/매크로 정의에 문제가있는 것 같습니다.

또 하나의 질문은 단위 테스트를위한 매크로를 정의해야 할 필요가 있습니까?

+0

무언가를 기록하고 싶을 때마다'UNIT_TESTING'을 테스트하는 대신 조건 적으로 [variadic 매크로] (http://stackoverflow.com/q/679979/)를 #define MYLOG (..define)로 정의 할 수 있습니다. .) (NSLog (__ VA_ARGS __))'또는'#define MYLOG (...)'를 사용하십시오. 또한 로깅을 사용하여 디버깅 정보를 인쇄하는 경우 대신 대화 형 디버거를 사용해야합니다. 당신은 프로세스에 대한 더 많은 제어권을 가지게 될 것이고이 문제는 사라질 것입니다. – outis

+0

팁 주셔서 감사합니다. –

답변

1

단위 테스트 대상의 빌드 설정에서 UNIT_TESTING을 정의해야합니다.

왼쪽 창에서 프로젝트를 선택한 다음 단위 테스트 대상을 선택한 다음 빌드 설정 -> 모두 -> 전 처리기 매크로를 테스트합니다.

+0

예, 작동합니다. 그리고 절대적인 초보자를 위해, Preprocessor 옵션을 볼 수 있도록 Build Settings 페이지에서 All 탭을 먼저 선택해야한다고 언급 할 가치가 있습니다. –

+0

답변에 감사를 추가했습니다. – Macondo2Seattle