我有以下,非常简单的XML配置为PHPUnit:
<PHPunit bootstrap="/_tests/TestAutoload.PHP"> <testsuites> <testsuite name="Unit Tests"> <directory suffix=".PHP">_tests</directory> </testsuite> </testsuites> </PHPunit>
如何从测试套件中排除此目录中的某些文件?我试过< exclude>和< blacklist>,但是在这种情况下似乎不起作用。也找不到任何其他文件比phpunit.de,没有提到任何关于它。否则,此配置工作完美。
有几种方法不能运行特定的测试 – 将其放入黑名单中,因此它永远不会运行可能不是这样 – 因为更改它意味着编辑黑名单,并且您经常会弹出并退出版本控制。
还有其他几种方法可能更合适:
如果测试尚未准备好运行:
$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-注解是专门停止或运行一组测试的最佳方式之一
/** * @group database * @group remoteTasks */ public function testSomething() { }
testSomething()现在分成两组,如果在命令行(或config.xml)中添加了–exclude-group参数。它不会运行。同样,您只能运行属于特定组的测试,例如以功能命名或错误报告。