実行する特定のテストスイートを選択するにはどうすればよいですか?
$ phpunit --configuration config.xml
config.xml:
<testsuites>
<testsuite name="Library">
<directory>library</directory>
</testsuite>
<testsuite name="XXX_Form">
<file>library/XXX/FormTest.php</file>
<directory>library/XXX/Form</directory>
</testsuite>
</testsuites>
PHPUnit 3.7.13の場合のコードを次に示します
$ phpunit --configuration config.xml --testsuite Library
$ phpunit --configuration config.xml --testsuite XXX_Form
テストスイートのグループを実行したい場合は、これを行うことができます
<testsuites>
<testsuite name="Library">
<directory>library</directory>
</testsuite>
<testsuite name="XXX_Form">
<file>library/XXX/FormTest.php</file>
<directory>library/XXX/Form</directory>
</testsuite>
<testsuite name="Both">
<directory>library</directory>
<file>library/XXX/FormTest.php</file>
<directory>library/XXX/Form</directory>
</testsuite>
</testsuites>
それから
$ phpunit --configuration config.xml --testsuite Both
残念ながら、PHPUnitは現在、このようなネストされたテストスイートをサポートしていません
<testsuites>
<testsuite name="Both">
<testsuite name="Library">
<directory>library</directory>
</testsuite>
<testsuite name="XXX_Form">
<file>library/XXX/FormTest.php</file>
<directory>library/XXX/Form</directory>
</testsuite>
</testsuite>
</testsuites>
したがって、テストスイートのグループをこの方法で実行する場合は、xml構成を複製する必要があります。
Phpunit-userメーリングリストの次のメッセージから明らかなように、これはPHPUnitの現在のバージョンでは不可能です。 http://thread.gmane.org/gmane.comp.php.phpunit.user/1302
しかし、別の方法があります。パスをphpunitに渡すだけです。
phpunit library/XXX
これにより、library/XXXディレクトリ内のすべてのテストが実行されます。
これで十分でない場合、別のオプションは @ groupアノテーション を使用して、テストを異なるカテゴリに分割し、選択的に実行できるようにすることです。
Phpunit 6.1では、xml構成ファイルで属性defaultTestSuite
を使用できます。これは、デフォルトオプションphpunit --testsuite xxx
およびオーバーライドされます。
別のオプションは、個別にテストするテストスイートごとに個別の構成ファイルを作成することです。重複した設定をコピー/貼り付けする必要があるかもしれないというオーバーヘッドがありますが、必要に応じて各構成ファイルを指定できます。
ここの他の答えは正しいです。 XML設定を使用してこれを行うことはできませんが、PHPで同じタイプの設定を行うことができます。
それは確かに最も美しいものではありませんが、必要な機能を提供するはずです。
Xml configを提供しました
<testsuites>
<testsuite name="Library">
<directory>library</directory>
</testsuite>
<testsuite name="XXX_Form">
<file>library/XXX/FormTest.php</file>
<directory>library/XXX/Form</directory>
</testsuite>
</testsuites>
仮に、ディレクトリ「ライブラリ」に3つのファイルが含まれているとします。
library
XXX
FormTest.php
Unit
unittest1.php
unittest2.php
そして、各ファイルには、完全な命名規則による1つのテストが含まれていること、例えば:FormTest contains testForm()
構成については、すべてを含む構成を作成します。
<?php
include_once "library/XXX/FormTest.php";
include_once "library/Unit/unittest1.php";
include_once "library/Unit/unittest2.php";
次に、phpunitの命名規則に従ってクラスを作成します。実際に使用することは決してないので、好きな名前を付けることができます...
class LibraryConfigTest extends PHPUnit_Framework_TestCase {
各「テストスイート」は、単に必要なテストを実行するメソッドになります。メソッドに任意の名前を付けます。もう一度、実際に使用することは決してありません。 Phpunitが実行を管理します。ただし、実行方法を理解できるように、必ずグループにコメントしてください。
/**
* All Tests in Library
* @group Library
**/
public function testLibrary() {
UnitTest1::testUnit1();
UnitTest2::testUnit2();
FormTest::testForm();
}
/**
* All Form tests in library/XXX
* @group XXX_Form
**/
public function testForm() {
FormTest::testForm();
}
}
?>
これで、必要な機能を取得するために、必要なグループに対して「config」を実行するだけです。
phpunit --group XXX_Form library_config.php
phpunit --group Library library_config.php
先ほど言ったように、これはconstantいものであり、定期的なメンテナンスが必要になるため、必ずしも良いコードではありませんが、探している機能を提供します。
Bergmannが次のラウンドでこの機能を追加することを願っていますが、ほとんど 無視する のように見えるので、そうは思えません。