なんとかするから、なんとかなる

エンジニア関係のことを書きます

JenkinsでiOSアプリをテスト後にレポートを確認する

概要

JenkinsでiOSアプリをテスト後にレポートを生成する方法 少し前に試した内容なので少し情報が古いことがあると思います。

背景

iOSアプリをテストする場合、xcodebuildをコマンドラインで実行することでテストができる。

ただし、xcodebuildで実行した場合、2つの課題があった。

  • 課題1:テスト結果がConsole上でしか確認できない
  • 課題2:Consoleで確認する場合、読みにくい

なので、Jenkins上でテスト結果を表示できるような方法を探していた。

解決策は3パターン

いずれの解決策でもJenkinsが読み取れるxmlファイルを出力することができる。

また、人が読めるようにConsoleに出力することができる

  • 策1:xctool というコマンドラインツールでテストを実行
  • 策2:fastlaneというツールを利用してテストを実行
  • 策3:xcprettyというコマンドラインツールでxcodebuildの実行結果をpipeline処理する

xctoolについて

xctoolはFacebookが作成したxcodebuildのラッパーツール

しかしながら、xcode8との相性が悪そうだったので、断念。

基本的な使い方

xcodebuildでテスト用にビルドを実行する。

ビルド後xctool でテストを実行する。

しかし、今回の環境ではエラーで失敗。関係しそうな記事を読み漁ったが解決せず。

$ xctool -project APP_NAME.xcodeproj -scheme APP_SCHEME -sdk iphonesimulator -configuration Debug -destination "platform=iOS Simulator,name=iPad Air 2,OS=10.2" run-tests
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Failed to query the list of test cases in the test bundle: Test bundle not found at: "APPLICATION PATH"
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  [Info] Collecting info for testables... (1680 ms)

Failed to query the list of test cases in the test bundle: Test bundle not found at: "APPLICATION PATH"
** RUN-TESTS FAILED: 0 passed, 0 failed, 2 errored, 2 total ** (1681 ms)

xcode8での対応が間に合っていないのではないかと推測。

fastlaneについて

最近iOS界隈で注目されているツール。

テストだけでなく、AppStoreへの配布まで自動でやってくれる優れもの。 ただし、できることがとても多いため、今回の用途のために試しに使ってみるには少しハードルが高いと感じた。

ある程度勘所をつかんだら、実戦投入したいところ。なので、今回は使用を断念。

xcprettyについて

xcodebuildからpipeline処理でレポート出力をしてくれる。

最終的に、この方法で落ち着いた。

どのような画像が表示されるかは、参考URLを参照ください。

使用方法

  • -r htmlでレポート結果をhtml出力

  • -r junitでjenkinsが読み取れるxml出力

Jenkinsの設定方法

(以前からのjenkinsの設定を正しくやっていることが前提)

f:id:hopita:20180806211325p:plain

参考URL

github.com