2012-10-25 1 views
1

나는 Cocos2d 응용 프로그램을 작성하고 기능 테스트를 작성하는 방법을 찾고 있습니다.기능 테스트 cocos2d 응용 프로그램

정말 필요한 것은 시뮬레이터에서 응용 프로그램을 실행하고 내 장면에 특정 노드가 있는지 확인하는 것입니다. 이 같은 것

@implementation MenuTest 

- (void) setUp 
{ 
    // Launch app on the simulator 
} 

- (void) tearDown 
{ 
    // Shut simulator down 
} 

- (void) testMenuContainsExitItem 
{ 
    CCScene *scene = [[CCDirector sharedDirector] runningScene]; 
    CCNode *exit = [scene getChildByTag:EXIT_ITEM]; 

    STAssertNotNil(exit, @"No exit item found"); 
} 

@end 

실행중인 앱에서 테스트를 실행할 수있는 방법이 있습니까?

답변

-1

앱의 모든 CCNode에 대해 다른 태그를 정의 할 수 있습니다. 인터페이스 섹션에서 예를 들어 그 같은 것을 추가

#define kExitNodeTag = 400; 

초기화하는 동안 : 모든 CCScene에 초기화 한 후 노드의 존재를 확인할 수 있습니다

-(id)init { 
    if(self=[super init]) { 
     ... 
     self.tag = kExitNoteTag; 
     ... 
    } 
} 

:

-(void)onEnter { 
    CCNode *exit = [scene getChildByTag:kExitNodeTag]; 
    STAssertNotNil(exit, @"No exit item found"); 
} 
+0

노드에 태그를 설정할 수 있다는 것을 알고 있습니다. 그렇다면'onEnter' 메소드 내에서 OCUnit 테스트를 어떻게 실행합니까? – lambdas

0

당신은 생성 및 설정 설정 방법의 장면을 선택한 다음 테스트 * 방법을 사용하여 장면이 사양에 따라 설정되었는지 확인하십시오.

게임 코드에서 호출하는 설정의 함수를 사용해야합니다. 같은 뭔가 :

-(void) setup 
{ 
    CCScene* scene = [FirstScene setup]; 
    [[CCDirector sharedDirector] runWithScene:scene]; 
} 

그런 다음 테스트를 수행 :

- (void) testMenuContainsExitItem 
{ 
    CCScene* scene = [CCDirector sharedDirector].runningScene; 
    CCNode *exit = [scene getChildByTag:EXIT_ITEM]; 

    STAssertNotNil(exit, @"No exit item found"); 
} 

당신은 필요하지 않으며 당신이 장면의 코드에서 OCUnit 테스트 코드 (예 : STAssert *) 중 하나를 추가해야합니다. 왜냐하면 OCUnit이없는 일반 빌드에서는 씬이 컴파일되지 않기 때문입니다.

+0

그래서 장면을 테스트하기 위해 시뮬레이터에서 내 앱을 실행할 필요가 없습니까? – lambdas

+0

내 장면이'CclabelTTF'를 인스턴스화 할 때 슬픈 예외가 발생합니다. – lambdas