Xcode 5になってからxcodebuildも進化していて、Xcode 4までネックになっていたApplication Testsの実行も簡単になりました。 そういうわけで自分にとってのxctoolの必要性は薄まり、あとはログさえキレイになってくれればいいのになあと思っていたのですが、そんなときにxcprettyが登場しました。

mneorr/XCPretty

xctoolとの違い

xctoolxcodebuildを置き換えることを目的としていましたが、xcprettyxcodebuildと共存してログの整形のみを行います。 xctoolの場合、”xcodebuildでは動くけどxctoolでは動かない”という状況に遭遇することがありますが、 xcprettyはビルドやテストの実行自体にxcodebuildを利用するので、既にxcodebuildで進んでいるプロジェクトでは簡単に利用を始めることができます。

インストール方法

gem install xcpretty

使い方

xcodebuild | xcpretty -c

実行例

例としてISHTTPOperationのユニットテストの結果をxcprettyで出力します。

xcodebuild clean test -sdk iphonesimulator -scheme ISHTTPOperation -configuration Debug -destination "name=iPhone Retina (3.5-inch),OS=7.0" | xcpretty -c

結果は以下のようになります。テスト結果として必要十分な情報量だと思います。

✓ Cleaning ISHTTPOperation/ISHTTPOperation [Debug]
✓ Building ISHTTPOperation/ISHTTPOperation [Debug]
✓ Compiling ISHTTPOperationQueue.m
✓ Compiling NSOperationQueue+HTTP.m
✓ Compiling ISHTTPOperation.m
✓ Building library libISHTTPOperation.a
✓ Building ISHTTPOperation/ISHTTPOperationTests [Debug]
✓ Running script 'Run Script'
Test Suite '/Users/ishkawa/Library/Developer/Xcode/DerivedData/ISHTTPOperation-bmnqbihsbwzsicguaxfhmfoznrvq/Build/Products/Debug-iphonesimulator/ISHTTPOperationTests.octest(Tests)' started
Test Suite 'ISHTTPOperationQueueTests' started
✓  ISHTTPOperationQueueTests testCancelOperationsWithHTTPMethod (0.016 seconds)
✓  ISHTTPOperationQueueTests testCancelOperationsWithHost (0.001 seconds)
✓  ISHTTPOperationQueueTests testCancelOperationsWithPath (0.001 seconds)
✓  ISHTTPOperationQueueTests testCancelOperationsWithURL (0.000 seconds)
✓  ISHTTPOperationQueueTests testDefaultQueue (0.002 seconds)
Test Suite 'ISHTTPOperationTests' started
✓  ISHTTPOperationTests testCancel (0.100 seconds)
✓  ISHTTPOperationTests testCancelAsynchronously (0.000 seconds)
✓  ISHTTPOperationTests testConcurrencyType (0.000 seconds)
✓  ISHTTPOperationTests testDeallocOnCancelAfterStart (0.100 seconds)
✓  ISHTTPOperationTests testDeallocOnCancelBeforeStart (0.100 seconds)
✓  ISHTTPOperationTests testDesignatedInitializer (0.000 seconds)
✓  ISHTTPOperationTests testErrorConnection (0.101 seconds)
✓  ISHTTPOperationTests testNormalConnection (0.202 seconds)
✓  ISHTTPOperationTests testQueueing (0.000 seconds)
Test Suite 'NSOperationQueueHTTPTests' started
✓  NSOperationQueueHTTPTests testDefaultHTTPQueue (0.000 seconds)