技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

OS3.0 の公式 UnitTest 試してみた

さくっとテスト対象プログラム

@interface HelloObject : NSObject {
}
- (NSString*)helloMessage:(NSString*)name;
@end
#import "HelloObject.h"
@implementation HelloObject

- (NSString*)helloMessage:(NSString*)name {
	return [NSString stringWithFormat:@"Hello %@.",name];
}

@end

この後、ターゲット追加で、UnitTest を追加。

名前は LogicTests でいーや
こいつをアクティブターゲットに設定する。
Tests グループ作ってテストコード隔離する。
Objective-C test case class を選択して作成。これも HelloTests でいーや。

ここで HelloTest をターゲットに指定する。
とゆーか普通のプロジェクトにこんなもん組み込んでもしょうがねえ。

今回はアプリケーションテストしないのでさくっとテスト書く。

@interface HelloTests : SenTestCase {
}
- (void)testHello;
@end

テストの本体

#import "HelloTests.h"
#import "HelloObject.h"

@implementation HelloTests

- (void) setUp {
	// Set up
}

- (void) tearDown {
	// Tear down
}

- (void)testHello {
	HelloObject* hello = [HelloObject alloc];
	[hello autorelease];
	
	STAssertTrue(
		[[hello helloMessage:@"Azalea"] isEqualToString:@"Hello Azalea."],
		@"Hello test is failed."
	);
}

@end

これだけではまだテストできない。
まぁテスト対象のコードをバンドルに突っ込むだけだけど。

とりあえずこれでロジックテストは実行できる。
ただし「Simulator」の「OS 3.0 以上」でのみ。