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であることにしてテストしないという選択もありでしょう。