テスト時のログを見やすくする
前回 XCTest
の name
プロパティを使ってテスト時のログを見やすくする方法について書いた。
その時は XCTest
の name
プロパティがあるのを知って「これを使えばログを見やすくできるんじゃないか?」という思考だったけど、その後純粋に「ログを見やすくするには?」の方向で考えたらもっと別の方法があった。
実装としては XCTest
クラスの
- (void)performTest:(XCTestRun *)run;
のオーバーライドで、このメソッドの super の実行前のログ出力は started
の前に、super 実行後のログ出力は passed (0.000 seconds)
の後にログ出力される。
コードでコメントアウトしている部分については NSStringFromClass(self.class)
でクラス名を取得、
NSStringFromSelector(self.invocation.selector)
で実行するテストメソッドの名前を取得
など試行錯誤してみたけど最終的に改行だけでいいんじゃない?という事で落ち着いた。
お好みで改行の代わりにハイフンで区切ってもいいと思う。
上記のテストを実行すると以下のようにログ出力される。
Test Suite 'All tests' started at 2015-06-14 16:15:12 +0000 Test Suite 'TestTests.xctest' started at 2015-06-14 16:15:12 +0000 Test Suite 'TestTests' started at 2015-06-14 16:15:12 +0000 Test Case '-[TestTests testExample]' started. 2015-06-15 01:15:12.941 Test[7983:6500037] abc Test Case '-[TestTests testExample]' passed (0.000 seconds). Test Case '-[TestTests testExample2]' started. 2015-06-15 01:15:12.941 Test[7983:6500037] def Test Case '-[TestTests testExample2]' passed (0.000 seconds). Test Case '-[TestTests testExample3]' started. 2015-06-15 01:15:12.942 Test[7983:6500037] xyz Test Case '-[TestTests testExample3]' passed (0.000 seconds). Test Suite 'TestTests' passed at 2015-06-14 16:15:12 +0000. Executed 3 tests, with 0 failures (0 unexpected) in 0.001 (0.001) seconds Test Suite 'TestTests.xctest' passed at 2015-06-14 16:15:12 +0000. Executed 3 tests, with 0 failures (0 unexpected) in 0.001 (0.001) seconds Test Suite 'All tests' passed at 2015-06-14 16:15:12 +0000. Executed 3 tests, with 0 failures (0 unexpected) in 0.001 (0.002) seconds
まとめとしては
これでOK