如何排除 PHPUnit 在覆盖范围内将文件带入帐户

问题描述 投票:0回答:1

我有一个侦听测试套件的 Codecov,假设我们只有一个集成测试套件,配置将如下所示: codecov.yaml

coverage:
  status:
    project:
      default:
        target: 50%
        threshold: 0%
        base: auto    
        if_no_uploads: error  
        if_not_found: success
      integration:
        target: 75%
        threshold: 0%  
        base: auto    
        if_no_uploads: error 
        if_not_found: success 
        flags:
          - integration

假设我在

Resouser.php
下的不同目录中有很多名为
/src/App/Ui/
的文件,这些文件仅包含开放的 API 文档配置,但不包含实际的 PHP 代码,因此我想将它们排除在覆盖范围之外。

如果我理解正确的话,它需要在 phpunit.xml 的

<coverage>
部分完成,对吧?所以我这样做了:

  <coverage cacheDirectory="var/phpunit/coverage/.phpunit.cache">
    <exclude>
      <directory suffix="Resource.php">./src/App/Ui/</directory>
    </exclude>
    <report>
      <clover outputFile="var/phpunit/coverage/clover.xml"/>
      <crap4j outputFile="var/phpunit/coverage/crap4j.xml"/>
      <html outputDirectory="var/phpunit/coverage"/>
      <xml outputDirectory="var/phpunit/coverage"/>
      <text outputFile="php://stdout" showUncoveredFiles="true"/>
    </report>

a 告诉我想排除目录

./src/App/Ui/
中带有后缀
EndpointResource.php
的所有文件,没有任何变化,覆盖百分比相同,并且覆盖的文件数量与总文件数量仍然相同

Code Coverage Report:        
  2024-01-16 14:54:19        
                             
 Summary:                    
  Classes: 56.07% (134/239)  

就像我添加

exclude
标签之前一样

phpunit codecov
1个回答
0
投票

如果您在要忽略的类/方法之上添加以下注释,它应该可以正常工作。可能比一次排除整个目录要多一些工作,但它会起作用。

/**
 * @codeCoverageIgnore
 */ 
© www.soinside.com 2019 - 2024. All rights reserved.