PHPUnit用の非常にシンプルなXML構成を以下に示します。
<phpunit bootstrap="/_tests/TestAutoload.php">
<testsuites>
<testsuite name="Unit Tests">
<directory suffix=".php">_tests</directory>
</testsuite>
</testsuites>
</phpunit>
このディレクトリ内の特定のファイルをテストスイートから除外する方法は?私は試した <exclude>
および<blacklist>
、ただし、このコンテキストでは機能しないようです。 phpunit.de one以外のドキュメントも見つかりませんでした。それ以外の場合、この構成は完全に機能します。
特定のテストを実行しないいくつかの方法があります-ブラックリストに入れて実行しないようにすることはできないかもしれません-変更するとブラックリストを編集することを意味し、多くの場合、バージョン管理に出入りすることになります。 。
より適切かもしれない他のいくつかの方法があります:
テストを実行する準備がまだ整っていない場合:
_$this->markTestIncomplete('This test has not been implemented yet.');
_
外部で実行するべきでない理由がある場合は、スキップしてください:
_if (!extension_loaded('mysqli')) {
$this->markTestSkipped('The MySQLi extension is not available.');
}
_
これをsetUp()
関数に入れることもできるので、テストクラスのすべてのテストがスキップされます。
成功した前のテストに依存するテストを作成できます:
_public function testEmpty()
{
$stack = array();
$this->assertTrue(empty($stack));
return $stack; // also sends this variable to any following tests - if this worked
}
/**
* only runs if testEmpty() passed
*
* @depends testEmpty
*/
public function testPush(array $stack)
{
}
_
@ group -name-アノテーションは、特定のグループのテストを明確に停止または実行するための最良の方法の1つです
_/**
* @group database
* @group remoteTasks
*/
public function testSomething()
{
}
_
testSomething()
が2つのグループになり、どちらかがコマンドライン(またはconfig.xml)に追加された場合は_--exclude-group
_パラメーター。実行されません。同様に、特定のグループに属するテストのみを実行することができます。たとえば、機能にちなんで名付けられたテストやバグレポートなどです。
ファイル名TestCase.php
を除外します。
これをあなたのphpunit.xml
に追加してください
<testsuites>
<testsuite name="BLABLA">
<directory suffix=".php">./tests</directory>
<exclude>./tests/TestCase.php</exclude>
</testsuite>
</testsuites>
実際のテストスイート からの追加の抜粋を以下に示します。
...
<testsuites>
<testsuite name="n98-magerun-tests">
<directory>./tests</directory>
<exclude>tests/N98/Magento/Command/Installer/UninstallCommandTest.php</exclude>
</testsuite>
...
このPHPUnit構成ファイルは、私が非常に良い経験をしたものです。
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
colors="true"
processIsolation="true"
stopOnFailure="true"
syntaxCheck="false"
backupGlobals="false"
bootstrap="test-bootstrap.php">
<testsuites>
<testsuite name="php-dba-cache">
<directory suffix="Test.php">tests</directory>
</testsuite>
</testsuites>
<logging>
<log type="coverage-html"
target="build/coverage"
charset="UTF-8"
yui="true"
highlight="true"
lowUpperBound="35"
highLowerBound="70"/>
</logging>
<filter>
<whitelist addUncoveredFilesFromWhitelist="true">
<directory suffix=".php">src</directory>
<exclude>
<file>test-bootstrap.php</file>
</exclude>
</whitelist>
</filter>
</phpunit>
phpunit documentation は、テストスイートでの除外に関しては少しミニマルです。明らかに、ディレクトリ全体のみを除外できますが、個々のファイルは除外できません。私は間違いが証明されてとても嬉しいです。回避策は、@ group機能を 上記に投稿 としてAlister Bulmanによって使用しているようです。
保持したいテストスイートのすべてのテストにタグを付ける必要があるのは、ちょっとした苦痛です。
Phpunit 6.5の場合、exclude
はwhitelist
の下にあります
<filter>
<whitelist>
<directory suffix=".php">src</directory>
<exclude>
<directory>src/Migrations</directory>
<file>src/kernel.php</file>
</exclude>
</whitelist>
</filter>
上記のソリューションに加えて、次のように_phpunit.xml
_からテスト、ディレクトリ、およびテストスイートを管理する、よりアーキテクチャ駆動のテストワークフローを使用できます。
tests/Unit
_、_tests/Feature
_);<testsuite>
_ 要素を使用してディレクトリをグループ化する必要があるので、テストスイートを作成します。All
テストスイートを作成し、 _defaultTestSuite="All"
_ 内の_<phpunit>
_キーを介して割り当てます素子。Tinker
テストスイートを作成します。 All
テストスイートに含めないでください。したがって、次のことができるようになります。
phpunit
CLIコマンドを使用して、常にデフォルトのAll
テストを実行します。phpunit --testsuite SuiteOne
_、phpunit --filter SomeTest
_またはphpunit --filter SomeTest::test_some_test_method
_--testsuite
_と_--filter
_引数を組み合わせるIDE(Sublime Textには Mac と Linux/Windows プラグイン)を使用すると、実行するテストを即座に選択できるようになります。