カスタムxcodebuild引数設定にテストビルドアクションを追加することによりユニットテストを実行するようにXcodeプラグインを設定しました。ユニットテストをXcode 5で実行するようにJenkinsを取得する方法の詳細については、questionを参照してください。xcodebuildは、出力がファイルにリダイレクトされたときにテスト結果の出力を壊します。
これでNSLogステートメントのコンソール出力または最終結果メッセージ** TEST SUCCEEDED **
がテスト結果と混ざっているように見えるため、ユニットテスト結果をJenkinsに必要なJUnitフォーマットに変換するパーサーをトリプルアップすることがありました。例えば
、ジェンキンスログは、このような出力を示しています。それは実際にあるべきとき
Test Case '-[Redacted_Conversion_Tests testConvertTo_ShouldSetamount_WhenamountIsNotZero]' passed (** TEST SUCCEEDED **
0.000 seconds).
Test Case '-[Redacted_Conversion_Tests testConvertTo_ShouldSetamount_WhenamountIsZero]' started.
:
Test Case '-[Redacted_Conversion_Tests testConvertTo_ShouldSetamount_WhenamountIsNotZero]' passed (0.000 seconds).
Test Case '-[Redacted_Conversion_Tests testConvertTo_ShouldSetamount_WhenamountIsZero]' started.
** TEST SUCCEEDED **
私はさらにこれに見て、絵のうち、ジェンキンスを引っ張ってきました。コマンドプロンプトでxcodebuildコマンドを直接実行した場合:
xcodebuild \
-workspace project.xcworkspace \
-scheme Tests \
-configuration Release \
-sdk iphonesimulator7.0 \
-destination "platform=iOS Simulator,name=iPhone Retina (4-inch),OS=latest" \
test
出力は常に細かく、順番に出てきます。
場合、しかし、Iパイプ他のプログラムに出力またはファイルにリダイレクト:上記のように
xcodebuild \
-workspace project.xcworkspace \
-scheme Tests \
-configuration Release \
-sdk iphonesimulator7.0 \
-destination "platform=iOS Simulator,name=iPhone Retina (4-inch),OS=latest" \
test > xcodebuild.out
cat xcodebuild.out
出力は、アウトオブオーダです。
stdoutに直接書き込まないとバッファリングやバッファリングが不十分なことが考えられますか?なぜこれが起こっているのか、それを修正するために私が実行できる可能性のある回避策を知っている人はいますか?
何パーサあなたはJUnitのテスト結果への出力を変更するために使用しますかかもしれませんか? – kocodude
[OCUnit2JUnit] – GBegen