1

私は 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

では、実行中のアプリでテストを実行する方法はありますか?

4

2 に答える 2

0

setup メソッドでシーンを作成およびセットアップしてから、test* メソッドを使用して、仕様に従ってシーンがセットアップされているかどうかを確認します。

ゲームコードからも呼び出している関数を必ずセットアップで使用してください。何かのようなもの:

-(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 なしでは通常のビルドでコンパイルされないからです。

于 2012-10-25T13:51:13.100 に答える
-1

アプリ内のすべての CCNode に異なるタグを定義できます。たとえば、インターフェイス セクションに次のようなものを追加します。

#define kExitNodeTag = 400;

初期化中:

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

すべての CCScene で初期化後にノードの存在を確認できます。

-(void)onEnter {
    CCNode *exit = [scene getChildByTag:kExitNodeTag];
    STAssertNotNil(exit, @"No exit item found");
}
于 2012-10-25T11:04:13.580 に答える