こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在5社経験している、13年目エンジニアです。
この記事では、 Laravelのテストで使用するPHPUnitにあるtearDownメソッドについて
- tearDownメソッドとは
- tearDownメソッドを使ったサンプルプログラム
と、丁寧に解説していきます。
前提:実行環境
実行環境は以下の通りです。
OS | Windows11 |
---|---|
PHPのバージョン | 8.2.4 |
Laravelのバージョン | 10.45.1 |
この記事では
C:\Laravel
配下に【LaravelSample】という名前でプロジェクトを作成しています。
tearDownメソッドとは
tearDownメソッドとは、各テストケースが実施された後に毎回実行されるメソッドです。
テストケース実施で使用した
- オブジェクトの削除
- データベースの接続解除
- ファイルの読み込みクローズ
をtearDownメソッドに定義しておくと便利です。
tearDownメソッドの書き方サンプルは以下になります。
1 2 3 4 5 |
protected function tearDown(): void { // テスト実行後処理を書く parent::tearDown(); } |
守るべきルールは、2つあります。
1つ目は、tearDownメソッドの戻り値を指定している
1 |
: void |
を必ず書くことです。
もし書いていない状態でテストを実行すると
1 2 |
Fatal error: Declaration of Tests\Unit\SampleTest::tearDown() must be compatible with PHPUnit\Framework\TestCase::tearDown(): void in C:\Laravel\LaravelSample\tests\Unit\SampleTest.php on line 9 PHP Fatal error: Declaration of Tests\Unit\SampleTest::tearDown() must be compatible with PHPUnit\Framework\TestCase::tearDown(): void in C:\Laravel\LaravelSample\tests\Unit\SampleTest.php on line 9 |
というようなエラーになります。
2つ目は、tearDownメソッド内で親クラスの
1 |
parent::tearDown(); |
を実行することです。
呼ぶ位置も重要で、メソッドの一番最後に書く必要があります。
上記2点のルールにはお気を付けください。
では、次の章で実際に使ってみます。
tearDownメソッドを解説するプログラムの概要
tearDownメソッドを解説するプログラムでは、テストケースを2つ用意します。
それぞれのテスト実行後にtearDownメソッドが実行されているのかを表示させて確認します。
PHPUnitテストプログラムは
C:\Laravel\LaravelSample\tests\Unit
配下に、【SampleTest.php】というファイル名で格納しています。
PHPUnitテストサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php namespace Tests\Unit; use PHPUnit\Framework\TestCase; class SampleTest extends TestCase { protected function tearDown(): void { dump('tearDown実行'); parent::tearDown(); } public function test_example1(): void { dump('test_example1実行'); $this->assertTrue(true); } public function test_example2(): void { dump('test_example2実行'); $this->assertTrue(true); } } |
実行結果
コマンドをたたいてテストケースを実行します。
指定したテストケースのみを実行するやり方は、以下の記事をご参考ください。
1 2 3 4 5 6 7 8 9 10 11 12 |
C:\Laravel\LaravelSample>php artisan test tests\Unit\SampleTest.php ^ "test_example1実行" ^ "tearDown実行" ^ "test_example2実行" ^ "tearDown実行" PASS Tests\Unit\SampleTest ✓ example1 0.01s ✓ example2 Tests: 2 passed (2 assertions) Duration: 0.09s |
各テストケースの実行後に、tearDownメソッドが実行されていることが確認できました。
まとめ:tearDownメソッドを使ってみよう!
以上がPHPUnitのtearDownメソッドについての解説でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント