概要
PHPUnit がバージョン上がって追加された新機能、使いこなしてないことが多いように思えましたので、各バージョンで何が増え、何が変わったのか、リリースノートから抽出して、特に美味しそうな項目をまとめて、簡単に解説してみます(多いので勝手ながら、使えそうなものを選んでます)。
PHPUnit 4.0.0
新機能
- テストプロキシ : 元のクラスのメソッドを模倣(そのまま呼ぶ?)してくれるモック。
-
willReturn*()
:will($this->returnValue($value))
がwillReturn($value)
と書けるように。他にもwillReturn
シリーズが各種用意されている。
下位互換の問題
- static のモック/スタブのサポートが限定的に。今後は、同じクラスの別メソッドから呼ばれるときしか機能しない。
PHPUnit 4.1.0
新機能
- マッチャ withConsecutive() : 呼ばれるごとに期待する引数が異なる場合にまとめて指定できる。これは便利。下記のように書ける:
$mock = $this->getMock('stdClass', array('foo'));
$mock
->expects($this->any())
->method('foo')
->withConsecutive(
['bar'], //1回目の呼び出し : $mock->foo('bar')
[21, 42] //2回目の呼び出し : $mock->foo(21, 42)
);
※ 上記は Framework_MockObject_Matcher_ConsecutiveParametersTest より引用。
PHPUnit 4.2.0
新機能
-
atLeast()
とatMost()
追加 : 前まではatLeastOne()
(少なくとも1回は呼ばれること)ならあったが、回数の明示や、「多くとも」の指定はできなかった。 -
assertTag()
とassertSelect*()
が非推奨に: 今後は phpunit-dom-assertions を使えということらしい。
PHPUnit 4.3.0
新機能
-
@expectedExceptionMessageRegExp
追加 : 正規表現で例外のメッセージ指定できるようになる。
PHPUnit 4.4.0
新機能
-
assertArraySubset()
追加 : 配列を含むかをアサーションする。(参考: マニュアル)
PHPUnit 4.5.0
新機能
- Prophecy サポート : テストがより見やすく書けるかも。
PHPUnit 4.6.0
特に面白いものは無し。
PHPUnit 4.7.0
新機能
- HTMLのコードカバレッジレポートで large tests(薄緑)、medium tests(普通の緑)、small tests(濃い緑) に色別されるようになった。
下位互換の問題
-
@small
,@medium
,@large
を記載していないテストはすべて@small
扱いになる。
PHPUnit 4.8.0
新機能
-
@testWith
追加 :@dataProvider
のデータをコメント上に書ける。便利そう。
例
/**
* @testWith [0, 0, 0]
* [0, 1, 1]
* [1, 2, 3]
* [20, 22, 42]
*/
public function testAdd($a, $b, $c)
(単体テストより抜粋)
下位互換の問題
-
assertContains()
とassertNotContains()
のチェックがより厳密に。 - デフォルトのグループ名が
__nogroup__
からdefault
に変更。
PHPUnit 5.0.0
新機能
-
@depends
でディープクローンできるように。 -
@depends
で渡されたモックオブジェクトの期待チェックが、依存先でも評価されるように。
下位互換の問題
- コードカバレッジ解析のためのホワイトリストの設定が必須になる。
サポート対象
- PHP 5.3, 5.4, 5.5 はサポート対象外となり、PHP 7 がサポート対象となる! (つまり PHP 5.6 と 7 が対象。)
こんな感じで!。