1

私はユニットテストが初めてで、いろいろ試しています。

1 つのボタン (合計を取得) と 3 つのテキストフィールド (2 つの数値を入力して合計を出力) を持つビュー コントローラーを作成しました。

int aNum = [self.firstNumber.text intValue];
int bNum = [self.secondNumber.text intValue];

sum = aNum + bNum;
self.total.text = [NSString stringWithFormat:@"%i", sum];
[self dismissKeyboard];

そして私のテストコード:

vc = [[TestingViewController alloc] init];
vc.firstNumber.text = @"1";
vc.secondNumber.text = @"2";

[vc getSum:nil];

STAssertTrue([vc.total.text isEqualToString:@"3"], @"total should be 3");

UI 要素を操作しようとしたため、テストに失敗しました。

私の質問は: このような UI 要素でテストすることは可能ですか? これを達成するためのテストをどのように書くのでしょうか?

みんなありがとう!

4

4 に答える 4

2

はい、単体テストでUI要素をテストすることは間違いなく可能です。

これ以上のテクニック(ネットワークに依存するテストコードを含む)は、Graham LeeによるテストドリブンiOS開発(開発者向けライブラリ)でカバーされています: http: //www.amazon.com/Test-Driven-iOS-開発-開発者-ライブラリ/dp/ 0321774183

ビューが読み込まれていない可能性があります。iOSで単体テストを開始したときも、同じ問題が発生しました。[vcloadView]を呼び出してみてください。ビューコントローラを初期化した後。

vc = [[TestingViewController alloc] init];
[vc loadView];
于 2012-09-20T04:29:25.737 に答える
0

UIをテストするために、uはjavascriptを使用でき、これはInstrumentsで実行されます。

于 2012-09-20T05:30:04.050 に答える
0

ビューにアクセスして実行されるNIBをロードする必要があります(iOSのビューのライフサイクルを参照)。

vc = [[TestingViewController alloc] init];
// vc.firstNumber is nil right now, because the view isn't loaded
[vc view];
// vc.firstNumber now exists
vc.firstNumber.text = @"1";
vc.secondNumber.text = @"2";

[vc getSum:nil];

STAssertTrue([vc.total.text isEqualToString:@"3"], @"total should be 3");

または、ビューがUIWindow階層の一部である場合は、これを行う必要はありません(つまり、エンドツーエンドのテスト)。

于 2012-09-20T04:25:08.953 に答える
0

実行中にアプリケーションの機能をテストしようとしています。単体テストとアプリケーション テストの違いを理解していますか? アプリケーション テストに関するドキュメントを読み、それに従いましたか? デバイスで実行していますか?

ここに役立つチュートリアルがあります: http://cocoawithlove.com/2009/12/sample-iphone-application-with-complete.html

于 2012-09-20T04:30:32.740 に答える