问题 PHPUnit - 从命令行中的代码覆盖范围中排除某些目录


我正在开发基于Yii框架的项目,我们有许多测试,我们以编程方式添加到测试套件中,因此我们不使用phpunit.xml文件来配置测试。

问题是,如何从代码覆盖率报告中排除某些目录(例如Yii文件夹)。我发现的大多数解决方案都基于xml文件中的黑名单/白名单配置选项。

我还发现phpunit命令有--filter选项,但是我找不到任何一个例子如何用它来排除完整目录(或者很少)。


7655
2018-02-23 11:58


起源



答案:


--filter 用于过滤当前运行的phpunit中执行的测试。

你可以使用它,所以说“只执行 --filter MyTestClass 要么 --filter testStuffThatBrokeAndIOnlyWantToRunThatOneSingleTest 但与代码覆盖无关。

--filter 与此无关 <filter> 在xml配置中,即使它们具有相同的名称:)


从代码覆盖率报告中排除文件的唯一方法是使用白名单/黑名单。

如果您自己使用白名单 source 在大多数情况下应该完成工作的文件夹。

白名单文档:

http://phpunit.de/manual/current/en/phpunit-book.html#appendixes.configuration.blacklist-whitelist

样品:

  <filter>
    <whitelist addUncoveredFilesFromWhitelist="true">
      <directory suffix=".php">src</directory>
    </whitelist>
  </filter>

11
2018-02-23 15:09



无论好坏,phpunit.xml正成为处理测试分组的唯一真正方法。 - Theodore R. Smith
这个答案都是关于如何包含目录(白名单),但是如何排除目录?相反(黑名单)不起作用。
绝对路径和相对路径都适用于<filter>指令。还有一个<blacklist>可用,如果这更像你的风格。 - AndrewPK


答案:


--filter 用于过滤当前运行的phpunit中执行的测试。

你可以使用它,所以说“只执行 --filter MyTestClass 要么 --filter testStuffThatBrokeAndIOnlyWantToRunThatOneSingleTest 但与代码覆盖无关。

--filter 与此无关 <filter> 在xml配置中,即使它们具有相同的名称:)


从代码覆盖率报告中排除文件的唯一方法是使用白名单/黑名单。

如果您自己使用白名单 source 在大多数情况下应该完成工作的文件夹。

白名单文档:

http://phpunit.de/manual/current/en/phpunit-book.html#appendixes.configuration.blacklist-whitelist

样品:

  <filter>
    <whitelist addUncoveredFilesFromWhitelist="true">
      <directory suffix=".php">src</directory>
    </whitelist>
  </filter>

11
2018-02-23 15:09



无论好坏,phpunit.xml正成为处理测试分组的唯一真正方法。 - Theodore R. Smith
这个答案都是关于如何包含目录(白名单),但是如何排除目录?相反(黑名单)不起作用。
绝对路径和相对路径都适用于<filter>指令。还有一个<blacklist>可用,如果这更像你的风格。 - AndrewPK