iPhoneアプリ開発でテストを試してみる。
少しずつ学習を進めているiPhoneアプリのテストについて書きます。
今回は一番簡単に使えるSenTestingKitを使い、
簡単な「足し算」メソッドを作って、テストを実行させるまでを試してみます。
ボタンを押したりのテストはまだ試しませんが、
万が一やる気がでるかもしれないので「Single View Application」を選択しました。
プロジェクトの設定は以下のようにしました。
ポイントは「include unit tests」ですね。
これでプロジェクトに単体テストをする仕組みが同梱されます。
「include unit tests」を選んでプロジェクトを作ると、
プロジェクト名+Testsというフォルダにテストのひな形クラスが作られています。
早速このままテストを実行してみましょう。
ショートカットはCommand + 「U」です。
もしくは画像の再生ボタンの部分を長押しして「Test」を選びます。
ちなみにこのままでは必ずテストが失敗するようになってます。
STFailは必ず失敗するメソッドだからです。
もう少し準備をします。
足し算をさせたいので「Objective-Cクラス」を作ります。
「New File」から、
「NSObject」のサブクラスを作ります。
ターゲット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; }
そのうち、また追記します。