iPhoneアプリ開発でテストを試してみる。

少しずつ学習を進めているiPhoneアプリのテストについて書きます。

今回は一番簡単に使えるSenTestingKitを使い、

簡単な「足し算」メソッドを作って、テストを実行させるまでを試してみます。

ボタンを押したりのテストはまだ試しませんが、
万が一やる気がでるかもしれないので「Single View Application」を選択しました。


プロジェクトの設定は以下のようにしました。
ポイントは「include unit tests」ですね。
これでプロジェクトに単体テストをする仕組みが同梱されます。



「include unit tests」を選んでプロジェクトを作ると、
プロジェクト名+Testsというフォルダにテストのひな形クラスが作られています。


早速このままテストを実行してみましょう。
ショートカットはCommand + 「U」です。
もしくは画像の再生ボタンの部分を長押しして「Test」を選びます。



ちなみにこのままでは必ずテストが失敗するようになってます。
STFailは必ず失敗するメソッドだからです。


もう少し準備をします。
足し算をさせたいので「Objective-Cクラス」を作ります。
「New File」から、



「NSObject」のサブクラスを作ります。


名前は「MyCalc」にしました。


ターゲットMyClassTestsにチェックをいれておきます。


クラスの追加も終わったので、
足し算メソッドをインターフェース(MyCalc.h)に用意します。

#import <Foundation/Foundation.h>

@interface MyCalc : NSObject

/**
 * 足し算メソッド
 */
- (int)addition:(int)operand1: (int)operand2;
@end



そして、MyCalcのmにメソッドの本体は書かずに用意します。

#import "MyCalc.h"

@implementation MyCalc
- (int)addition:(int)operand1: (int)operand2{
    //空のメソッド
}
@end



今回は、以下の流れでテストをしていきます。
詳しくはTDD等で調べてみて下さい。

1. テストを失敗させる。
2. テストをとりあえず成功させる。
3. テストをもう少しちゃんと作る。

まずは空のメソッドを動かそうとして失敗させます。

#import "MyCalcTests.h"

// 追加
#import "MyCalc.h"

@implementation MyCalcTests

- (void)setUp
{
    [super setUp];
}

- (void)tearDown
{    
    [super tearDown];
}

/**
 * 足し算ができることを確認する。
 * 2と6を引数に渡して、結果の8が返却される事を確認する。
 */
- (void)testAddition
{
    MyCalc *myCalc = [[MyCalc alloc] init];
    STAssertEquals(8, [myCalc addition:2 :6],@"足し算が失敗しました。");
}

@end



失敗すると以下のように、失敗したテストを赤色で表示してくれます。


いまはメソッドの中身がないので間違いなく失敗します。
なので、2.のテストをとりあえず成功させるようにします。
MyCalc.mのadditionメソッドに「8」を返すように書きます。

- (int)addition:(int)operand1: (int)operand2{
    return 8;
}



これで暫定的にテストに成功しました。



でもこれだと何も足し算できていないので、
少しメソッドを修正して、もう一度「Command」+ 「U」を実行します。
テスト結果が緑ならいったんは成功です。
まずは2つの引数を足して返却する所まで確認できました。

- (int)addition:(int)operand1: (int)operand2{
    return operand1 + operand2;
}



そのうち、また追記します。