如何运行特定的phpunit xml testsuite?

And*_*den 76 xml phpunit

如何选择要执行的特定测试套件?

$ 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>
Run Code Online (Sandbox Code Playgroud)

Jos*_*ock 115

这里的代码就像PHPUnit 3.7.13一样

$ phpunit --configuration config.xml --testsuite Library
$ phpunit --configuration config.xml --testsuite XXX_Form
Run Code Online (Sandbox Code Playgroud)

如果您想运行一组测试套件,那么您可以执行此操作

<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>
Run Code Online (Sandbox Code Playgroud)

然后

$ phpunit --configuration config.xml --testsuite Both
Run Code Online (Sandbox Code Playgroud)

不幸的是,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>
Run Code Online (Sandbox Code Playgroud)

因此,如果您想以这种方式运行测试套件组,则必须进行xml配置复制!


Ant*_*nna 20

在PHPUnit的用户邮件列表这些消息就证明这不是PHPUnit中的当前版本可能:http://thread.gmane.org/gmane.comp.php.phpunit.user/1302

但是有一个替代方案,你可以简单地传递一个到phpunit的路径.

phpunit library/XXX
Run Code Online (Sandbox Code Playgroud)

这将运行library/XXX目录中的所有测试

如果这对您来说还不够,另一个选择是使用@group注释将测试划分为可以选择性运行的不同类别.


小智 7

从 phpunit 6.1 开始,您可以在 xml 配置文件中使用 attribute defaultTestSuite,这就像使用默认选项一样phpunit --testsuite xxx,并且会被覆盖。