📌
PHPUnitには @testdox を使え
日本語メソッド名なんてもうやめろ
開発のガイドラインや実際のソースコードを読んでいて以下のようなものを発見する。
./sampleTest.php
public function test_aとbが完全一致しているか返すテスト(string a, string b){
・・・
}
(ノ∀`)アチャー
日本語メソッド名という駄目な風習がここにも蔓延していたか。
一時期爆発的に流行ったんよね。
当初から キモ過ぎて 嫌だったんだが。
PHPUnit5 までは手段がなかった。
ただ、ver6以降は代替手段が増えたので移行すべきだ。
それが
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
------------------- ↓ 本題はここから ↓-------------------
まずは実行
現行のテストの状態でいいので、
まずは実行してみるとよい。
PHPUnitはコマンド打つとエラーがない限り経過がわからないが、
こちらは現在実行している内容まで把握できる。
testdoxオプションなし
bash
docker-compose exec app vendor/bin/phpunit
PHPUnit 6.5.13 by Sebastian Bergmann and contributors.
Runtime: PHP 7.4.33
Configuration: /app/phpunit.xml
. 1 / 1 (100%)
Time: 15 ms, Memory: 4.00MB
OK (1 test, 1 assertion)
testdoxオプションあり
bash
docker-compose exec app vendor/bin/phpunit --testdox
PHPUnit 6.5.13 by Sebastian Bergmann and contributors.
Runtime: PHP 7.4.33
Configuration: /app/phpunit.xml
s\HelloWorld
[x] Say hello world
「Say hello world」というテストが実行され成功したということが記述でわかる
データプロバイダ使用するときは引数を取り込むことができる
Jestのeachに近い感じ
testAddTest.php
/**
* @dataProvider additionProvider
* @testdox Adding $a to $b results in $expected for $_dataName
*/
public function testAdd($a, $b, $expected)
{
// test code
}
public function additionProvider()
{
return [
'data set 1' => [0, 0, 0],
'data set 2' => [0, 1, 1],
'data set 3' => [1, 0, 1],
'data set 4' => [1, 1, 3]
];
}
Discussion