2013-04-15 2 views
1

Xcode에서 제공하는 내장 테스트 프레임 워크를 사용하면 응용 프로그램 코드가 응용 프로그램으로 실행되는 것과 달리 테스트 실행자가 실행 중인지 여부를 확인할 수있는 방법이 있습니까?Xcode의 단위 테스트 프레임 워크를 사용하면 응용 프로그램 코드가 단위 테스트로 실행되는지 여부를 결정할 수 있습니까?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // ... 

    if (IsUnitTestRunning()) { 
     [self useDefaultSettings]; 
     [self showDefaultViewController]; 
    } 
    else { 
     [self restoreUserSettings]; 
     [self restoreUserInterface]; 
    } 

    // ... 
} 

내가 어떤 사전 처리 컴파일러 매크로를 정의하는 새로운 구성을 생성하고 엑스 코드를 설정할 수 있습니다 알고있다 : 즉

, 나는 응용 프로그램 코드에서 이런 일을 할 수 있는지 궁금하네요 구성표를 작성하여 테스트를 실행할 때 해당 구성을 사용하거나 테스트를 실행할 때 내 응용 프로그램에서 일종의 전역 변수를 YES로 설정할 수 있지만이를 처리하기 위해 이미 OCUnit 또는 Xcode에 내장 된 것이 있는지 궁금합니다.

답변

1

Macintosh에서는 Xcode에서 디버그하는 동안 "int main(argc, argv)"으로 만드는 몇 가지 옵션을 전달하는 방법이 있습니다.

iOS쪽에 비슷한 기능이 있다고 의심됩니다. 전달되는 옵션을 "int main(argc, argv)"을 통해 포착 할 수 있어야합니다.

Modify Your Xcode scheme a bit

또 다른 옵션은 "didFinishLaunchingWithOptions:"를 통해 전달 사전 옵션에보고 볼 수 있습니다에 대한 다른 무언가가있는 경우 : 당신이 일의 엑스 코드 측의 수정을 어디에 여기

입니다 Xcode에서 시작하거나 장치 또는 시뮬레이터에서 시작하는 것 (Xcode에서 시작하지 않음).

+0

'main()'에서 물건 잡기 및/또는 환경 변수 설정은 실제로 iOS에서 작동합니다. 또한 상단의 답변 (http://stackoverflow.com/questions/7274711/run-logic-tests-in-xcode-4-without-launching-the-simulator)을 참조하십시오. ('options' 사전의 내용을 설정하는 방법을 찾을 수는 없지만, 실제로하고 싶은 것은 아닙니다.) –

관련 문제