OCUnit と Google Tool Box のどちらかを選択しようとしています。好みはありますか。どちらかをお勧めしますか?なぜですか? 2のいずれかについてのあなたの経験について聞くことに非常に興味があります.
私がそれらの両方で抱えている主な問題は、テストされたメソッドでのクラッシュの管理です(例:BAD ACCESS)。クラッシュが発生したクラスを教えてくれるものはありませんでした!!!
Google ツール ボックスを使用すると、実行されているテスト スイートを確認できますが、テスト ケースは確認できません (テスト スイートに 50 個のテスト ケースがある場合、どうすればよいでしょうか?)
OCUnit を使用すると、クラッシュの原因となったテスト スイートのテスト ケースを少なくとも確認できます。
GTB で私が持っているメッセージの種類は次のとおりです。
Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds
Test Suite 'LogicTests' started at 2009-12-14 18:03:15 +0100
/Users/admin/Documents/Tests/GTBTest/RunIPhoneUnitTest.sh: line 122: 688 Segmentation fault "$TARGET_BUILD_DIR/$EXECUTABLE_PATH" -RegisterForSystemEvents
Command /bin/sh failed with exit code 139
クラッシュの原因となったのはテスト スイート 'LogicTests' であることがわかりますが、それだけです。
OCunit の場合、同じエラーのメッセージは次のとおりです。
Test Suite 'LogicTests' started at 2009-12-14 17:51:26 +0100
Test Case '-[LogicTests testFail]' started.
/Developer/Tools/RunPlatformUnitTests.include: line 415: 536 Segmentation fault "${THIN_TEST_RIG}" "${OTHER_TEST_FLAGS}" "${TEST_BUNDLE_PATH}"
少なくとも OCUnit を使用すると、実行中のテスト ケースを追跡し、最終的にデバッグできます (ただし、クラスと行番号の情報がないと、非常に長い時間がかかる可能性があります...)
これらの問題にどのように対処しますか?
前もって感謝します。
PS:問題を再現する方法は次のとおりです。非常に簡単です:
呼び出されたときにクラッシュするメソッドを持つクラスを作成するだけです (これは、TDD を実行しているときに常に発生します)。
- (void) crashMethod {
NSMutableArray *crashArray;
[crashArray addObject:[NSObject new]];
}
次に、このメソッドを呼び出すテスト ケースを作成します。
- (void) testFail {
ClassToTest *test = [[ClassToTest alloc] init];
[test crashMethod];
[test release];
}
前もってありがとう、ヴィンセント