ObjcUnit その2
2003/05/18
ObjcUnitの使い方
もう1年ぶりなので、どうでもいいかもしれないけど(^^;
とりあえず、書いておきましょう。
前提
それでは、ObjcUnitを使って、Test-Driven Developmentしていきます。
Moneyは見飽きていることでしょう。ここでは簡単に
0から9までの表現する整数SmallInteger
を作ることにします。
プロジェクトの作成
- プロジェクトの新規作成
ProjectBuilderを立ち上げて「新規プロジェクト」を作成します。
Application→Foundation Toolを選びます。
- フレームワークの追加
「External Frameworks and Libraries」にFoundation.frameworkがあります。さらに、ObjcUnit.framework「フレームワークを追加」します。これで、ObjcUnitが使えるようになりました。
- 便利クラスを作成
ObjcUnit.framework/Resources/Documentation/howToSetUpAProjectBuilderProject.htmlに従い、class AllTestsを作成します。前回に従って、クラステンプレートを設定しているのであれば、「新規ファイル」を作成し、「Objective-C TestCase subclass」を選びます。クラステンプレートを設定していないのであれば、「Objective-C class」を選んで修正しましょう。
-
AllTestsのメソッドsuiteに
[self addTest:[TestSuite suiteWithClass:[SmallTest class]]];
|
を追加。
- AllTestsと同様にして、class SmallTestを追加
ここまでで、一応プロジェクトは完成。しかし、まだTestCaseだけで肝心のプログラムはまだ何もない。
テストを書こう
Test-Driven Developmentというやつは、肝心のプログラムを書く前にテストのプログラムを書くんです。それじゃ、順を追って書いていきましょう。
- まずは、SmallTestにテストメソッドを追加します。
今回は、「0かどうかを確かめるテスト」にしましょう。
- (void) testEqualZero
{
SmallInteger* zero = [SmallInteger initWithInt:0];
[self assert:zero equals:[SmallInteger initWithInt:0]];
}
|
と、0を表すインスタンスを2つ作って比較してみましょう。
- ビルドしましょう
おそらくコンパイラに「SmalIntegerなんて知らん」と言われるはずです。まだ作っていないんだから、あたりまえと言えば、あたりまえ。「まだ何も書いてないのにビルドするなんてアホ!」なんて思っていませんか?
Test-Driven Developmentというやつは、そういうもんなんです。予定どおりにエラーを出すのも重要なんです。
- class SmallIntegerを作成。
そういうわけで、とりあえず、class SmallIntegerを作成しましょう。さっきと同じ要領で「新規ファイル」を作成し、「Objective-C class」を選んで、class SmallIntegerを作成しましょう。
ここで、ビルドすると、今度は「メソッドinitWithInt:なんて知らん」と言われることでしょう。これも予想どおりですね(^_^)
- メソッドを実装。
SmallIntegerに、メソッド
+ (id) initWithInt: (int)initValue;
|
を追加。testEqulZeroで使ったメソッドです。
ここでは、とにかく実装を書いて動かすことが重要です。
+ (id) initWithInt: (int)initValue
{
SmallInteger *newValue = [[[SmallInteger alloc] init] autorelease];
return newValue;
}
|
としておきましょう。
ここまできて、やっとビルドできるようになったはずです。めでたし、めでたし。
今日のおまけ
リビルドしたときに、prebind のwarningがうるさかったら、
[ターゲット]→「設定」→「リンカ設定」「最適化」→「プレバインド」のチェックをはずしましょう。
ここまでの状態になったプロジェクトを置きました。参考にしてみてください。
戻る