| Prev | Next |
既存のコードのテストを記述する際は、 以下のようなコードを何度となく繰り返し記述することになるでしょう。
public function testMethod()
{
}
PHPUnit は、既存のクラスのコードを解析して テストケースクラスの雛形を作成することができます。
次の例は、Calculator という名前のクラス (例 17.1 を参照ください) 用のテストクラスの雛形を作成する手順を示すものです。
phpunit --skeleton Calculator
PHPUnit 3.2.10 by Sebastian Bergmann.
Wrote test class skeleton for Calculator to CalculatorTest.php.
もとのクラスの各メソッドについて、 出来上がったテストケースクラスのテストケースは不完全な状態 (第 10 章 を参照ください) です。
作成されたテストケースクラスを実行した結果を以下に示します。
phpunit --verbose CalculatorTest
PHPUnit 3.2.10 by Sebastian Bergmann.
CalculatorTest
I
Time: 0 seconds
There was 1 incomplete test:
1) testAdd(CalculatorTest)
This test has not been implemented yet.
/home/sb/CalculatorTest.php:54
OK, but incomplete or skipped tests!
Tests: 1, Incomplete: 1.
@assert アノテーションを メソッドのコメント部で使用すると、 シンプルではあるけれど意味のあるテストを自動的に生成することができます。 これは不完全なテストケースではありません。 例 17.2 に例を示します。
例 17.2: @assert アノテーションをつけた Calculator クラス
<?php
class Calculator
{
/**
* @assert (0, 0) == 0
* @assert (0, 1) == 1
* @assert (1, 0) == 1
* @assert (1, 1) == 2
*/
public function add($a, $b)
{
return $a + $b;
}
}
?>
もとのクラスの各メソッドについて、 @assert アノテーションの内容をチェックします。 これらは、以下のようなテストコードに変換されます。
/**
* Generated from @assert (0, 0) == 0.
*/
public function testAdd() {
$o = new Calculator;
$this->assertEquals(0, $o->add(0, 0));
}
作成されたテストケースクラスを実行した結果を以下に示します。
phpunit CalculatorTest
PHPUnit 3.2.10 by Sebastian Bergmann.
....
Time: 0 seconds
OK (4 tests)
表 17.1 に、サポートされる @assert の種類と、それがどのようなテストコードに変換されるかをまとめました。
表17.1 サポートされる @assert アノテーション
| アノテーション | 変換後の内容 |
|---|---|
@assert (...) == X
|
assertEquals(X, method(...))
|
@assert (...) != X
|
assertNotEquals(X, method(...))
|
@assert (...) === X
|
assertSame(X, method(...))
|
@assert (...) !== X
|
assertNotSame(X, method(...))
|
@assert (...) > X
|
assertGreaterThan(X, method(...))
|
@assert (...) >= X
|
assertGreaterThanOrEqual(X, method(...))
|
@assert (...) < X
|
assertLessThan(X, method(...))
|
@assert (...) <= X
|
assertLessThanOrEqual(X, method(...))
|
@assert (...) throws X
|
@expectedException X
|
| Prev | Next |
Copyright © 2005-2011 Sebastian Bergmann.