Laravel ユニットテスト(実行前後ログを残したい)
◆ディレクトリ
Laravelプロジェクトを作成したときにできるディレクトリ(Feature・Unit)
・Feature apiやwebページの検証
・Unit クラスやメソッド
この辺はプロジェクトごとにわかりやすい名前や構造に変えることもありそう。
◆テストメソッドの指定の仕方
class ExampleTest extends TestCase
{
public function testBasicTest()
{
$this->assertTrue(true);
}
/**
* @test
*/
public function sample()
{
$this->assertTrue(true);
}
}
2つある(どちらでも好みで)
・メソッド名の先頭にtestをつける
・testアノテーションをつける
testアノテーションを使うと、メソッド名を日本語名にしてもOK
/**
* @test
*/
public function テストします()
{
$this->assertTrue(true);
}
◆実行方法
//ファイル内のtestメソッドがすべて実行される
vendor/bin/phpunit tests/Unit/ExampleTest.php
//ファイル内のtestメソッドを指定して、それだけ実行
vendor/bin/phpunit tests/Unit/ExampleTest.php --filter=sample
//ディレクトリのすべてのファイルのすべてのメソッドを実行
vendor/bin/phpunit tests/Unit
//すべてのテスト
vendor/bin/phpunit
◆テスト実行前後ログを残す
基本的にTestCaseクラスを継承しているので、そのクラス内に記述してみる。
もともと用意されている便利メソッドをオーバーライドして使おうと思う。
setUp() メソッド実行前に呼ばれる
teardown() メソッド実行後に呼ばれる
abstract class TestCase extends BaseTestCase
{
use CreatesApplication;
public function setUp(): void
{
parent::setUp();
//実行開始ログ
Log::info('start/class:['. get_called_class(). '] method:['. get_class_methods(get_called_class())[0].']');
}
public function tearDown(): void
{
//実行終了ログ
Log::info('end/class:['. get_called_class(). '] method:['. get_class_methods(get_called_class())[0].']');
parent::tearDown();
}
}
今回はdebug_traceを使わないようにしたかった(情報量が多いため)
この方法は、テストを一ファイルに一つしか書かないという条件で、ファイルごとにテストを定義するという決まりなら、使えるが他に万能な方法を考えたい。
[参考記事もともと用意されてるメソッド]https://qiita.com/aozora0000/items/c10676beabb5570accce
Author And Source
この問題について(Laravel ユニットテスト(実行前後ログを残したい)), 我々は、より多くの情報をここで見つけました https://qiita.com/shibaHaya/items/45bdf92077075454bb90著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .