phpunitでメソッド名の先頭がtest以外をテストメソッドと認識させる




Ruby On RailsでRSpecを1年前くらいに業務で触れることがあり、テストが楽しくなったので、はやいとこPHPのテストもしっかり勉強しなくてはと思いつつ1年たってしまったので、今更ですがphpunitについて本格的に勉強しようと思っていろいろテストについて調べていました。

いろいろ参考ソースをGitHubでみていると、テストメソッドは

public function testExample()
{
    // テスト
}

のように先頭にtestがついているメソッドが実行されるということが参考書にも書いてあるのだけど、先頭がテストではなく、下のような感じでなんでもありなメソッド名を定義しているサイトもいっぱいありました。

public function this_is_the_pen()
{
    // テスト
}
public function いちたすいちはに()
{
    // テスト
}

なぜかと思って色々調べていたらようやくわかりました。

/** @test */
public function this_is_the_pen()
{
    // テスト
}
/** @test */
public function いちたすいちはに()
{
    // テスト
}

ドキュメントブロックに@testと書いておくことでそのメソッドがテストメソッドと指定できるということでした。

アノテーション @test
https://phpunit.readthedocs.io/ja/latest/annotations.html#test