このページの目次
日本語ドキュメント
https://phpunit.readthedocs.io/ja/latest/index.html
事前準備(フィクスチャ)
- データベースのセットアップ
- クラス、ライブラリの読み込みなど
基本的な使い方
Class
という名前のクラスのテストは、ClassTest
という名前のクラスに記述します。ClassTest
は、(ほとんどの場合)PHPUnit\Framework\TestCase
を継承します。- テストは、
test*
という名前のパブリックメソッドとなります。@test
アノテーションをメソッドのコメント部に使用することでもテストメソッドであることを示せる
- テストメソッドの中で
assertSame()
のようなアサーションメソッド (アサーション を参照ください) を使用して、期待される値と実際の値が等しいことを確かめます。 @depends
アノテーションを使ってテストメソッドの依存性を明示的にあらわすことで、特定のテストメソッド(プロデューサー)の返り値を引数にとるテストメソッド(コンシューマー)を記述することができます。@dataProvider
アノテーションを使用することで、テストメソッドに任意の引数を渡すことができます。@dataProvider
で指定したメソッドと@depends
で指定したテストの両方からの入力を受け取るテストの場合、 データプロバイダからの引数のほうが依存するテストからの引数より先にきます。- テストするコード内で例外がスローされたかどうかを
expectException()
メソッドで調べることができます。
https://phpunit.readthedocs.io/ja/latest/writing-tests-for-phpunit.html
テストが未完成の時
$this->markTestIncomplete(
'このテストは、まだ実装されていません。'
);
特定の条件でテストが実行できずスキップする必要がある時
$this->markTestSkipped('不要な処理なのでスキップします');
@requires によるテストのスキップ
型 | 取り得る値 |
---|---|
PHP | PHP のバージョン (比較演算子を利用することもできます) |
PHPUnit | PHPUnit のバージョン (比較演算子を利用することもできます) |
OS | PHP_OS にマッチする正規表現 |
OSFAMILY | 任意の OS family |
function | function_exists に渡せるパラメータ |
extension | 拡張モジュール名 (バージョンを明示的に指定したり、比較演算子を利用して指定したりできます) |
コマンドラインでの使用法
https://phpunit.readthedocs.io/ja/latest/textui.html
参考文献
https://qiita.com/cyross4vocaloid/items/c3643726f9402206b2b9
https://reffect.co.jp/laravel/phpunit-test#Laravel_Breeze
https://qiita.com/shimotaroo/items/934e05d3d7335b545429
https://qiita.com/niisan-tokyo/items/264d4e8584ed58536bf4
Google検索:「laravel テスト 方法」