默认情况下在 PHPUnit 中运行单个测试套件

2022-08-31 00:40:36

我的 PHPUnit 配置文件有两个测试套件,和 .当我运行测试运行程序时,它会在两个套件中运行所有测试。我可以使用标志:来定位单个套件,但我需要将测试运行程序配置为默认情况下仅运行该套件,并且仅在使用testsuite标志专门调用时才运行。unitsystemvendor/bin/phpunittestsuitevendor/bin/phpunit --testsuite unitunitintegration

我的配置:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit colors="true">
  <testsuites>
    <testsuite name="unit">
      <directory>tests/Unit</directory>
    </testsuite>
    <testsuite name="integration">
      <directory>tests/Integration</directory>
    </testsuite>
  </testsuites>
  <filter>
    <whitelist>
      <directory suffix=".php">src</directory>
    </whitelist>
  </filter>
  <logging>
    <log type="coverage-clover" target="build/clover.xml"/>
  </logging>
</phpunit>

答案 1

PHPUnit 6.1.0 开始,现在支持属性。defaultTestSuite

看看 https://github.com/sebastianbergmann/phpunit/pull/2533

这可以在其他属性中使用,如下所示:phpunit

<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.2/phpunit.xsd"
         backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="tests/bootstrap.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         defaultTestSuite="unit"
         processIsolation="false"
         stopOnFailure="false">
    <testsuites>
        <testsuite name="unit">
            <directory suffix="Test.php">tests/Unit</directory>
        </testsuite>
        <testsuite name="integration">
            <directory suffix="Test.php">tests/Integration</directory>
        </testsuite>
    </testsuites>
</phpunit>

现在可以代替 运行 。phpunitphpunit --testsuite unit

测试套件的名称很可能区分大小写,因此请注意这一点。


答案 2

似乎没有办法从phpunit.xml文件中列出多个测试套件,但随后只运行一个。但是,如果您确实可以控制更完整的集成和测试环境,从而可以更准确地配置内容,则可以拥有多个phpunit配置文件,并使用更多涉及的环境设置一个(或多个)命令行参数选项,该配置将执行更多操作。这至少可以确保最简单的配置将以最简单的方式运行。--configuration <file>

如果您专门运行这两个文件,则可以随意调用这两个文件,但是可能值得考虑将快速运行的文件称为 默认文件 ,并将专门命名和扩展的filem称为 .默认情况下,如果原始普通.xml不存在,则会自动运行 .dist 文件。另一种选择是将文件放在代码存储库中,然后将其复制到一个具有较少testuite的文件中,该文件本身并未签入版本控制,并且仅保留在本地(它可能也会被标记为在.gitignore文件中被忽略,或类似文件)。phpunit.xmlphpunit.xml.distphpunit.xml.distphpunit.xml


推荐