これまでのところ、Array と組み込み関数 sizeof() のテストは 2 つだけです。多数の array_*() 関数のテストを開始する場合、それぞれの関数のテストが必要になります。それぞれを最初から書くことができます。ただし、より良いアプローチは、テスト インフラストラクチャを一度作成し、その後は各テストの異なる部分のみを作成することです。 PHPUnit はそのようなインフラストラクチャです。
例 5 は、PHPUnit を使用して例 4 の 2 つのテストを書き直す方法を示しています。
例5. PHPUnit を使用して Array と sizeof() をテストします
。
require_once 'PHPUnit2/Framework/TestCase.php';
クラス ArrayTest extends PHPUnit2_Framework_TestCase {
パブリック関数 testNewArrayIsEmpty( ) {
// 配列フィクスチャを作成します。
$fixture = 配列( );
// 配列フィクスチャのサイズが 0 であることをアサートします。
$this->assertEquals(0, sizeof($fixture));
}
パブリック関数 testArrayContainsAnElement( ) {
// 配列フィクスチャを作成します。
$fixture = Array( );
// 配列フィクスチャにメンバーを追加します。
$fixture[] = '要素';
//配列フィクスチャのサイズが 1 であることをアサートします。
$this->assertEquals(1, sizeof($fixture));
}
}
?>
例 5 は、PHPUnit を使用してテストを作成するための基本的な手順を示しています
。クラス Class のテスト クラスは ClassTest です。
2. ClassTest は通常、PHPUnit2_Framework_TestCase を継承します。
3. Test はパラメーターのないパブリック メソッドであり、その名前は test* です。
4.テスト メソッドでは、assertEquals() (表 6 を参照) などのアサーション関数を使用して、実際の値が期待値と一致するかどうかをアサートします。
PHPUnit のようなフレームワークは多くの問題を解決する必要がありますが、その中には互いに矛盾しているように見える問題もあります。テストは次の条件も満たしている必要があります。
学びやすい
テストは学びやすく
なければなりません。そうしないと開発者は
学べません。 開発しやすいです。 テストは開発しやすいものでなければなりません。そうでないと開発者は開発できません。
読みやすい
です。 テスト コードには外部関係があってはなりません。 、テスト自体が混乱の中で迷子になることはありません。
実行が簡単
テストは簡単に実行でき、実行結果は明確で明確な形式で表現される必要があります。
高速実行
テストは 1 日に何千回も実行できるように、迅速に実行する必要があります。
コード分離
テストは相互に影響を与えることができず、テストの順序を変更しても結果に影響を与えることはできません。
コンポーザブル
任意の組み合わせでテストを実行できる必要がありますが、これはコード分離の当然の結果です。
これらの制約の間には、主に 2 つの矛盾があります。
学習のしやすさと開発のしやすさ
通常、テストにはプログラミングの完全な柔軟性は必要ありません。多くのテスト ツールは、独自のテスト スクリプト言語を提供しています。これらの言語には、テストの内容を妨げるノイズがないため、テストの読み取りと書き込みが簡単です。しかし、新しい編み物メーラーと一連のツールを学ぶのは依然として不便で、混乱しやすいです。
コード分離と高速実行 ある
テストの結果が他のテストに影響を与えないようにするには、各テストの開始時にテスト用の完全なトピックを作成し、実行前の状態を復元する必要があります。ただし、状態のセットアップには長い時間がかかります (たとえば、データベースに接続し、実際のデータを使用して既知の状態に初期化する)。
この問題に対する PHPUnit の解決策は、テスト言語として PHP を使用することです。場合によっては、フル機能の PHP は短くて簡単なテストを作成するには強力すぎることがありますが、私たちが使用するプログラマーはすでに PHP の十分な経験を持っています。消極的なテスターを説得する必要があるため、これらの初期テストの作成に対する障壁を下げることが非常に重要です。