3

Xcode4 の SenTest 単体テスト機能を使い始めました。それはかなりうまくいっていますが、...

Xcode は、マクロ内でコード補完の提案を提供していません。STAssert*()

キーストロークと画面領域を節約するために、単純な式をアサートに直接記述するのが好きです。

STAssertTrue(mydoc.isInitialized, nil);
STAssertTrue(mydoc.pageCount == 2, nil);

私が抱えている問題は、アサート内に式を書いている間、Xcode がコード補完を提供していないことです。

これは、単体テストのコンテキストでは大きな問題です。コード補完は、アサートを記述する必要がある残りのプロパティとメソッドを思い出すための迅速で便利な方法です。完了の通常の利点は言うまでもありません。

そこで、コード補完を取得できるように、次のようにアサートを記述しました。

BOOL b = NO;

b = mydoc.isInitialized;
STAssertTrue(b, nil);

b = mydoc.pageCount == 2;
STAssertTrue(b, nil);

本当はこんなことしなくていいのに。より冗長で読みにくく、Xcode の単体テストの失敗メッセージの意味が少なくなります。

何か案は?派生データ ディレクトリを削除し、Xcode を再起動し、クリーンアップし、再構築しました。

4

1 に答える 1

1

本当に答えではありませんが、提案:

コードが冗長になり、読みにくくなるとおっしゃいましたか? 変数に意味のある名前を使用しないのはなぜですかplace holder。テストの読みやすさを向上させることができます。

BOOL isDocumentInitialized = mydoc.initialized;
STAssertTrue(isDocumentInitialized, @"myDoc should be initialized");

// You may even wish to change the naming convention on the object method to be
- (BOOL)isInitialized; // instead of - (BOOL)initialized;
// It is perhaps slightly clearer and follows other naming conventions 

BOOL hasTwoPages = (2 == mydoc.pageCount);
STAssertTrue(hasTwoPages, @"myDoc should have 2 pages but has %d pages", mydoc.pageCount);
于 2011-07-27T13:39:01.353 に答える