ライフサイクルから理解するPHPUnit by きんじょうひでき

PHPerKaigi 2025
採択
パンフ記事(8ページ)

ライフサイクルから理解するPHPUnit

o0h_ きんじょうひでき o0h_
1

例えば、何かのテストケースを1つ実装します。 vendor/bin/phpunit で、テストを実行します。
その後に起こることは何でしょうか?
「CLIの入力を解釈して」「設定ファイルを読み込んで」「実行可能なテストケースを列挙して」「実行対象のテストケースを選別して」「実行順序等のオプションがあればそれも考慮し」・・・

「普段は何気なく使っているPHPUnitも、良く考えたら色々なことをしていそうだ」なんて気持ちになりませんか?

PHPUnitを支える仕組みに、イベントシステム(Observerパターン)があります。
例えば https://github.com/sebastianbergmann/phpunit/tree/11.4.0/src/Event/Events を見てください、こんなに色々なイベントが定義されています!
これにより、複雑に要素が絡み合った「テスト実行」の全体の中で、要所要所の拡張性が高く保たれている訳です。

見方を変えると、PHPUnitの管理するイベントに着目することで、テスト実行のライフサイクルの骨子を掴めます。
つまり「イベントを知る」=「FWの思想に触れる」ための手掛かりになるのです。
また、エクステンションと呼ばれる機構を用いて、任意のイベントを利用した機能拡張も可能です。

知っているとPHPUnitとちょっとだけ仲良く慣れるかもしれない、どこかで役に立つかもしれない、
そんな仕組みに触れてみませんか?

記事の内容

  1. PHPUnitの持つイベントシステムの仕組み(実装観点での概要)
  2. 用意されているイベントの紹介
  3. 「Extension」入門・実例の紹介