LoginSignup
17
11

More than 5 years have passed since last update.

PHPUnit の各バージョンについて調べてみた

Posted at

概要

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 が対象。)

こんな感じで!。

17
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
11