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