LoginSignup
15
18

More than 5 years have passed since last update.

Laravel5.1でbehatを使ってjenkinsで自動テストする

Posted at

今日やること

これまで構築した環境でGitHubにPushしたら
自動でjenkinsさんにbehatのテストシナリオを走らせてもらう。
さらに結果もSlackへも通知する。

behatのテスト結果をjenkinsで認識するには
Junit形式でxmlを読ませるのが必要らしいのでその設定手順をやります。

環境

前回Laravelでbehatを使うためBehat-Laravel-Extensionを導入したところ
Laravel5.1でbehatを使ってみるの状態から引き続き作業を行う。

サーバー側のjenkins設定はこちらの記事で行った。

作業

主な設定はこちらの方の記事が参考になりました。というかそのままいけました。
behat 3.0とJenkins CIでBDDに挑戦(5)
Junit formatter for Behat 3.x

2015年7月15日時点でbehat-laravel-extensionをcomposerで入れた際、
behat3.0.15が入りますが、このバージョンではJunitでの出力に対応していません。
masterには対応したPRがマージされているのでこちらを使用します。

behatのバージョンをJunitに対応したバージョンへ変更する

masterブランチから3.0.*の開発中をもってくるように
以下のコマンドで変更します。

composer require behat/behat:~3.0@dev --dev
behatが入れ替わって
./vendor/behat/behat/features/junit_format.feature
などJunit関連のファイルが含まれているかと思います。

Junit形式出力してみる

以下のコマンドでテスト結果をxmlで出力してみます。
./vendor/behat/behat/bin/behat --format=junit --out=.
実行後、default.xmlが生成されていれば成功です。

default.xml
<?xml version="1.0" encoding="UTF-8"?>
<testsuites name="default">
  <testsuite name="show laravel home" tests="1" skipped="0" failures="0" errors="0">
    <testcase name="Home" status="passed"></testcase>
  </testsuite>
</testsuites>

GitHubにPushしてサーバーに反映させる

すでに自動デプロイさせるように設定しているのでPushするだけで反映。

サーバー側でcomposer updateを実行する

サーバー側でもbehatを入れ替えなければいけませんので、
composer updateを実行して入れ替えを行います。

Junit形式で出力してみる

サーバー側でも正常に動くか試してみましょう。

Jenkinsに設定を行う

ジョブの設定画面を開き、シェルの実行にテスト&結果をJunit形式で出力するコマンドを入れます。
Junitの結果を読むのにWORKSPACEにJunitを出力すると後の指定が楽ですね。
具体的に以下のように設定しました。
jenkins.jpg
※あれ?これじゃテストだめでもデプロイしちゃう気がしてならない。追々調整します。

ビルド実行してみる

slackへ通知が流れます。
一番上にTest Status: Passedってでてますね!
無事設定完了です。

jenkins2.jpg

15
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
18