概要
- テストクラスとテストメソッドを定義し、ファイルを指定してテストを実行したが
INFO No tests found.
がでてテストが実行されなかった。ちょっとだけ詰まったので解決策を記載する。
問題発生までの経緯
-
下記のようなテストコードのメソッドを記載した。当該のテストクラスには下記のメソッドしか存在しない。別のメソッドをそのまま持ってきているのでDocコメント部分にデータプロバイダーの呼び出しなどが記載されたままになっている。
test.php/** * 正常系 * * make method-test class=tests/Feature/App/Http/Controllers/User/ChangeTypeControllerTest.php method=test_ユーザータイプ更新_正常系 * * @dataProvider validParamsDataProvider * @param array<string, string|int> $validParams * @return void * */ public function test_ユーザータイプ更新_正常系(/* array $validParams */): void { dd(''); $user = User::factory()->createOne(['email' => 'test1@example.com']); $requestBody = [ 'userId' => $user->id, 'userTypeMasterId' => $user->userTypeMasterId, ]; $response = $this->sendRequest($this->path, $this->method, $requestBody); $response->assertStatus(Response::HTTP_OK); /* $this->assertDatabaseHas( 'users', [ 'email' => $validParams['email'], 'name' => $validParams['name'], 'user_type_master_id' => $validParams['userTypeMasterId'], ] ); */ }
-
上記のテストメソッドしか記載されていないテストクラスを指定してPHPUnitでテストを実行した。
問題発生
-
下記のエラーがでて当該のテストクラスが実行されない。
INFO No tests found.
問題解決までの経緯
- 一つ一つ問題が無いか確認する。
- まずはphp artisan testコマンドで指定しているパスが正しいかを確認した。
- 特に問題なさそう。
- テストメソッドがテストメソッドとして認識されるようになっているか(
@test
アノテーション付与 or メソッド名をtestで始める)を確認した。- 特に問題なさそう。
- 当該のテストメソッドのDocコメントを一旦削除した。
- ↑を実施したところテストメソッドが実行され
dd()
で止まった。
原因
- 存在しないデータプロバイダーメソッドをDocコメント内部で呼んでいたためだった。怠慢はよくない。