PHPUnitについて

日本語ドキュメント

https://phpunit.readthedocs.io/ja/latest/index.html

事前準備(フィクスチャ)

  • データベースのセットアップ
  • クラス、ライブラリの読み込みなど

基本的な使い方

  1. Class という名前のクラスのテストは、ClassTest という名前のクラスに記述します。
  2. ClassTest は、(ほとんどの場合) PHPUnit\Framework\TestCase を継承します。
  3. テストは、test* という名前のパブリックメソッドとなります。
    1. @test アノテーションをメソッドのコメント部に使用することでもテストメソッドであることを示せる
  4. テストメソッドの中で assertSame() のようなアサーションメソッド (アサーション を参照ください) を使用して、期待される値と実際の値が等しいことを確かめます。
  5. @depends アノテーションを使ってテストメソッドの依存性を明示的にあらわすことで、特定のテストメソッド(プロデューサー)の返り値を引数にとるテストメソッド(コンシューマー)を記述することができます。
  6. @dataProvider アノテーションを使用することで、テストメソッドに任意の引数を渡すことができます。
  7. @dataProvider で指定したメソッドと @depends で指定したテストの両方からの入力を受け取るテストの場合、 データプロバイダからの引数のほうが依存するテストからの引数より先にきます。 
  8. テストするコード内で例外がスローされたかどうかを expectException() メソッドで調べることができます。

https://phpunit.readthedocs.io/ja/latest/writing-tests-for-phpunit.html

テストが未完成の時

$this->markTestIncomplete(
   'このテストは、まだ実装されていません。'
);

特定の条件でテストが実行できずスキップする必要がある時

$this->markTestSkipped('不要な処理なのでスキップします');

https://phpunit.readthedocs.io/ja/latest/incomplete-and-skipped-tests.html?highlight=%E3%83%86%E3%82%B9%E3%83%88%E3%81%AE%E7%9C%81%E7%95%A5#incomplete-and-skipped-tests-skipping-tests

@requires によるテストのスキップ

取り得る値
PHPPHP のバージョン (比較演算子を利用することもできます)
PHPUnitPHPUnit のバージョン (比較演算子を利用することもできます)
OSPHP_OS にマッチする正規表現
OSFAMILY任意の OS family
functionfunction_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 テスト 方法」

https://www.google.com/search?q=laravel+%E3%83%86%E3%82%B9%E3%83%88+%E6%96%B9%E6%B3%95&oq=laravel+%E3%83%86%E3%82%B9%E3%83%88%E3%80%80%E6%96%B9%E6%B3%95&aqs=chrome..69i57j0i546l5j69i61.2654j0j7&sourceid=chrome&ie=UTF-8