#はじめに
Dockerをある程度使える前提で書いていきます。
『DockerでPHPUnitを少しさわってPHPのテスト少し試してみたい!』方向けです。
よろしくお願いします!
★テスト記述する際のお決まり事項
・Class という名前のクラスのテストは、ClassTest という名前のクラスに記述
・ClassTest は、(ほとんどの場合) PHPUnit\Framework\TestCase
・テストは、test* という名前のパブリックメソッドとなります。(なのでtestSample()やtestA()という書き方になる)
・テストメソッドの中で assertSame() のようなアサーションメソッド (アサーション を参照ください) を使用して、期待される値と実際の値が等しいことを確かめます。
★ユニットテストを書くそもそもの目的
バグの発見と修正や コードのリファクタリングを開発者がやりやすくすること。
ソフトウェアのドキュメントとしての役割を果たすこと。
私的には同じバグを繰り返さないために書くものという感じで理解しています。
★どこをテストすべきか
ひとつのユニットテストがカバーするのは、 通常はひとつの関数やメソッド内の特定のルートだけとなる
上記内容はほぼ以下URLからの参考です。
https://phpunit.readthedocs.io/ja/latest/writing-tests-for-phpunit.html
様々なチェックメソッドは以下
https://phpunit.readthedocs.io/ja/latest/assertions.html#appendixes-assertions
では早速
#環境作成
以下のようにファイルを作成して、『docker-compose.yml』ある場所でdocker-compose up --build -d
を叩きます。
そうすると、<\>:81/simple以下のように表示されています。
※ポート(81の部分)は同じですがIpは各環境で違います。ちなみに私のipは$ docker-machine ip default
で調べられます。意味は『defaultとして作成したドッカーマシンのip』
全体の構成参考画像
<?php
require_once 'sample.php';
$sample = new sample\Sample();
echo $sample->a();
<?php
namespace sample;
class Sample
{
public function a()
{
return 'あ';
}
public function i()
{
return 'い';
}
}
<?php
use PHPUnit\Framework\TestCase;
require_once 'sample.php';
class SampleTest extends TestCase
{
public function testSample()
{
$sample = new sample\Sample();
//同じ値、同じ型でない場合エラー
$this->assertSame($sample->a(), 'あ');
}
}
version: '3'
services:
apach:
container_name: sample-apache #作成されていると出来ないので新しく作成する場合ここの名前を変更
build: ./ #Dockerfileを使用してコンテナ作成
ports:
- 81:80
volumes:
- ./html:/var/www/html # コンテナ var/www/html の中に/htmlの中身を入れる
From php:7.4-apache
RUN apt-get update \
&& apt-get install -y \
zip \
unzip
WORKDIR /var/www/html
以下の表示は右記載でお願いします。 ===> <<ipアドレス>>:81/simple
※以下に最終完成バージョンも含めてあげているので、もしよかったら参考にしていただければと思います。
#コンテナに入ってもう一仕事する
以下コマンド今使用しているコンテナIDの確認を行う
$ docker ps
コンテナ内に以下コマンドで入る、 ※『1999d283b4f9』は上記で出力したコンテナIDを使用してください
$ docker exec -i -t 1999d283b4f9 bash
コンテナ内で以下コマンドうちcomposerのインストール
$ curl -sS https://getcomposer.org/installer | php
composerのインストールが無事行えたら以下コマンドで『PHPUnit』のインストール
$ php composer.phar require --dev phpunit/phpunit
参考:https://phpunit.readthedocs.io/ja/latest/installation.html
全ての準備は出来た!テストコードは書いてあるので、以下コマンドをコンテナ内で実行しテスト実行してみる
$ vendor/bin/phpunit TEST/SampleTest.php
以下のようになればテスト行えたことが分かる
以下の表示は右記載でお願いします。 ===> $ vendor/bin/phpunit TEST/SampleTest.php
テスト実行結果参考以下URL
https://phpunit.readthedocs.io/ja/latest/textui.html
表示 | 意味 |
---|---|
. | テストが成功した際に表示されます。 |
F | アサーション失敗 |
E | テストメソッドで何かしら失敗 |
I | テストがふかんぜんまたは未実装 |
#最後に
以上終わりです!
書き足すことあるかもですが最初に書いたものは削除しない予定です!
後HTMLでコードガバレッジ出す記事も書いたのでもしよかったら見てください!
#参考
https://phpunit.readthedocs.io/ja/latest/installation.html