やっと、テストコード…PHPUnitの使い方をわかってきた今日この頃です。
さらに、テストは自分でもやりますが、コミットしたら勝手にテストしてくれるCIがいると、頼れるうって思います。
↑これを(「passing」になってるのを)README.mdに貼りたかっただけなんですけどね!!
ということで
PHPUnit と Travis CI
の使い方を書きたいと思います。(自己流)
https://github.com/kin29/ci-test ←ここにソース置いています。
PHPUnit
テストコードにそって、テストしてくれるツール。
Travis CI
テスト/ビルド環境を作ってくれるツール。
ただし、環境を用意してくれるだけなのでビルド/テスト内容は「.travis.yml」に記述しなければならない。
CIツールの代表的なものである、Jenkinsさんはテストのための環境構築が必要となるが、その手間が省ける。(=>SaaS)
実践!GithubでコミットしたらTravisCIに自動でテスト(PHPUnit)をしてもらう。
PHPUnitの準備
$ mkdir ci-test
$ cd ci-test/
composer.json をつくる。composer initだと対話式でできます。
依存関係も適切に設定してくれるので、自分で生にcomposer.json書くより安全な気がします。
今回でいうとPHPとPHPunitのバージョン関係もここでいい感じにしてくれました。
$ composer init
Welcome to the Composer config generator
This command will guide you through creating your composer.json config.
Package name (/) [kin29/ci-test]:
Description []: it is ci-test.
Author [kin29 <kin29.com@gmail.com>, n to skip]:
Minimum Stability []:
Package Type []:
License []: MIT
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]?
Search for a package: php
Enter the version constraint to require (or leave blank to use the latest version): >=7.0.0
Search for a package:
Would you like to define your dev dependencies (require-dev) interactively [yes]?
Search for a package: phpunit/phpunit
Enter the version constraint to require (or leave blank to use the latest version):
Using version ^7.3 for phpunit/phpunit
Search for a package:
{
"name": "kin29/ci-test",
"description": "it is ci-test.",
"require": {
"php": ">=7.0.0"
},
"require-dev": {
"phpunit/phpunit": "^7.3"
},
"license": "MIT",
"authors": [
{
"name": "kin29",
"email": "kin29.com@gmail.com"
}
]
}
Do you confirm generation [yes]?
Would you like the vendor directory added to your .gitignore [yes]?
$ ls
composer.json //できた!!autoloadとかはあとで追加する。
$ composer install
$ ls
composer.json composer.lock vendor
$ vi composer.json //autoload追加
//以下を追記
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"Test\\": "tests/"
}
}
$ composer update //autoloadを適用させる
//実装とテストを書く。構成こんな感じ
$ tree src/ tests/ bootstrap.php
src/
└── Kin29.php
tests/
└── Kin29Test.php
bootstrap.php
0 directories, 2 files
//phpunit.xmlを作る。
$ vi phpunit.xml
<phpunit bootstrap="./bootstrap.php">
<testsuites>
<testsuite name="Ci Test">
<file>tests/Kin29Test.php</file>
</testsuite>
</testsuites>
</phpunit>
//テスト実行→成功!
//これを、コミットした時、自動でテスト実行してもらうようにする(→CIの役目)
$ phpunit tests/
PHPUnit 7.2.4 by Sebastian Bergmann and contributors.
. 1 / 1 (100%)
Time: 296 ms, Memory: 10.00MB
OK (1 test, 1 assertion)
Travis CIの準備
$ vi .travis.yml //ビルド・テストの設定ファイルを作成
language: php
php:
- 7.1
- 7.2
before_script:
- composer install
script:
- phpunit tests/
$ git add .
$ git commit -m 'travis-ci,phpunit追加'
$ git push origin master
ビルド・テスト開始!!!
Githubのリポジトリにコミットすると、ビルド・テストが始まります。
↑trigger word設定で変更可能です。
「passing」になれば、テスト合格です!
「failed」になってもコンソールのログが見れるので、原因を突き止めやすいです!
PHPとPHPUnitのバージョンがあってないって、何回も言われました。
CIが自分では知らないことも気づいてくれて教えてくれて助かります。