Laravel9の新機能であるテストカバレッジ計測を試してみました。
テストカバレッジとは、ソフトウェアテストの進捗を表す尺度の一つです。テスト対象のコードのうち、どの程度の割合のコードがテストされたかを表すものです。
環境
カバレッジ計測を行った環境です。
ソフトウェア | バージョン |
---|---|
PHP | 8.2.6 |
Laravel | 10.13.5 |
カバレッジ計測
テスト対象(TodoController)
Todoのステータス文字列を返す関数をテストします。
戻り値が3パターンあります。
<?php
namespace App\Http\Controllers;
use App\Models\Todo;
use Illuminate\Http\Request;
class TodoController extends Controller
{
public function getStatus(Request $request)
{
$todo = Todo::find($request['id']);
if($todo)
{
switch($todo->isComplete)
{
case 0:
return ['status' => 'unfinished'];
case 1:
return ['status' => 'finished'];
}
}
else
{
return ['status' => 'none'];
}
}
}
テストコード
テストコードを作成します。
戻り値が3パターンあるので、3つのAssertを書きます。
<?php
namespace Tests\Feature;
use Tests\TestCase;
class ExampleTest extends TestCase
{
public function test_getStatus(): void
{
$response = $this->get(route('todo.status', ['id' => 1]));
$response->assertExactJson(['status' => 'unfinished']);
$response = $this->get(route('todo.status', ['id' => 2]));
$response->assertExactJson(['status' => 'finished']);
$response = $this->get(route('todo.status', ['id' => -1]));
$response->assertExactJson(['status' => 'none']);
}
}
テストコマンド
testコマンドにオプション「--coverage」をつけて実行します。
php artisan test --coverage
実行結果
coverageオプションをつけてtestコマンドを実行すると、カバレッジ計測結果が出力されます。
「Http/Controllers/TodoController」に関して、カバレッジ100%のテストコードを書いたので、カバレッジが「100.0%」となっています。
Laravel10でテストカバレッジ計測を試しました。
テストカバレッジ計測は、Laravel9以降で利用可能です。
テスト駆動で開発する際、カバレッジ計測をすると良さそうです!