2

PHPUnit のマニュアルには次のように書かれています。

PHPUnit コマンドライン テスト ランナーをディレクトリに指定すると、*Test.php ファイルが検索されます。

参照: http://www.phpunit.de/manual/3.6/en/organizing-tests.html#organizing-tests.filesystem

これは間違っています!

私が電話するとき:

phpunit --config myconfig.xml --bootstrap mybootstrap.php tests

すべてのphpファイルが必要です。

  1. 最初のアイデアは、構成 xml でブラックリストまたはホワイトリストを使用することでしたが、これらのリストはテスト対象のサブジェクトのフィルターであり、テスト クラスをフィルター処理することに気付きました。
  2. 次に考えたのは、構成 xml 内でテストスイートを使用することでした。しかし、現時点では、テスト スイートは定義することしかできませんが、コマンド ライン経由で実行することはできません (Jet は PHPUnit に実装されておらず、チケットは 1 年以上オープンになっています)。
  3. 次に考えたのは、テスト スイート ローダーを使用することでしたが、それらの使用方法に関するドキュメントが見つかりません。

私が実行すると:

phpunit --config myconfig.xml --bootstrap mybootstrap.php --loader My_Testsuite_Loader tests

PHPUnit は "tests/" にあるすべての php ファイルを取得して実行します。ファイル「My/Testsuite/Loader.php」が含まれます。PHPUnit はクラス My_Testsuite_Loader が存在するかどうかをチェックします。これまでのところすべて順調です。

「My/Testsuite/Loader.php」のテンプレートとして「PHPUnit/Runner/StandardTestSuiteLoader.php」を使用しました。メソッド「load()」および「reload()」が含まれています。どちらのメソッドも、PHPUnit フレームワークによって呼び出されることはありません。なぜだめですか?独自の testsuiteloder があれば、テスト スイートの除外スキーマを実装する機会が得られると思いました。

私のプロジェクトのサンプル ファイル システム:

<root>
|-src/MyProject/Package/Object.php
|-tests/MyProject/Package/Object/TestTemplate.php
|-tests/MyProject/Package/Object/GetFooTest.php
|-tests/MyProject/Package/Object/GetBarTest.php
|-tests/phpunit.xml
|-tests/bootstrap.php
|-tests/My/Testsuite/Loader.php

ご覧のとおり、sut (テスト対象のメソッド) に関するすべてのテストに 1 つのファイルを使用します。これらの *Test.php ファイルはすべて TestTemplate (TestCase) を継承しています。TestTemplate.php には、オブジェクト (Object.php) を初期化し、それをプライベート メンバー var に格納するセットアップがあります。

テスト スイート ローダーの使用方法 / 目的は? (パターンに適合しないテストクラスを除外する方法: "*Test.php"?)

4

1 に答える 1

-1

次のように「tests」引数を取り出す必要があります

phpunit --config myconfig.xml --bootstrap mybootstrap.php

次に、 myconfig.xml で

<testsuites>
   <testsuite name="AllTests">
      <directory>.</directory>
   </testsuite>
<testsuites>

<filter>
  <blacklist>
    <directory suffix=".xml">.</directory>
    <file>MyProject/Package/Object/TestTemplate.php</file>
  </blacklist>
</filter>
于 2013-02-18T08:39:56.833 に答える