2003/06/17
前回、前々回と説明の都合で思いっきり嘘を書いてあります(^^;
あれ?と思ったことはありませんでしたか? もし思わなかったとしたら、Objective-CもTest Firstも理解できていないことになりますので、勉強しなおしてください(_ _)
- (BOOL) isEqual: (id)another { if (value == [another intValue]) { return TRUE; } else { return FALSE; } } |
- (void) testIntValue { SmallInteger* one = [SmallInteger initWithInt:1]; SmallInteger* two = [SmallInteger initWithInt:2]; [self assertTrue:(1 == [one intValue])]; [self assertTrue:(2 == [two intValue])]; } |
- (int) intValue { return value; } |
ここで「終わった」と思ってしまっては、またundoにだまされちゃいますよ。ほら、もう1つテストしてないでしょ?
Objective-Cには、private methodはありません。ヘッダで宣言しなくてもメソッドを定義できます。こうすると、表向きメソッドを見えないようにすることはできます。でも、動的にメソッドをサーチすれば呼び出せちゃいます。したがって、C++だったら、privateメンバにアクセスするくらいでテストするわけないのに、Objective-Cではテストが必要になってくるわけです。
もちろん、private methodであることにしてテストしないという選択もありでしょう。