我刚刚得到了一个要维护的遗留项目,我一开始就把它放在一个测试工具(Codeception)中,并在它上面运行覆盖。然而,它目前只能通过PHPBrowser运行(由于其复杂性和遗留性质,单元测试目前是不可能的),因此它需要远程覆盖。我尝试指定哪些文件应该覆盖,哪些不应该覆盖,但它似乎完全忽略了这一点,并包含了所有文件,包括非PHP文件。
我在用codecept run acceptance --no-colors --coverage-html coverage做测试。
这是我的codeception.yml文件:
paths:
tests: tests
output: tests/_output
data: tests/_data
support: tests/_support
envs: tests/_envs
actor_suffix: Tester
extensions:
enabled:
- Codeception\Extension\RunFailed
settings:
lint: false
coverage:
enabled: true
include:
- api_base/api/web/*
exclude:
- api_base/system/config.php这是acceptance.yml
# Codeception Test Suite Configuration
#
# Suite for acceptance tests.
# Perform tests in browser using the WebDriver or PhpBrowser.
# If you need both WebDriver and PHPBrowser tests - create a separate suite.
actor: AcceptanceTester
modules:
enabled:
- PhpBrowser:
url: http://new-project.local/api/web
- \Helper\Acceptancec3.php文件位于项目的根目录中。下面是目录结构的大致概念:
+- api_base/
| +- api/
| | +- web/
| | | \- *.php
| | \- *
| +- README.md
| +- system/
| | +- config.php
| | \- *
| \- *
+- bin/
| \- *
+- c3.php
+- codeception.yml
+- composer.json
+- composer.lock
+- tests/
| +- acceptance/
| | \- AcceptanceCest.php
| \- *
\- vendor/
\- *报告中的文件具有正确的覆盖率,但有些文件我不希望包括在内。当前包含所有文件,即使我指定了exclude: [ ./*.* ]。我希望在远程覆盖率报告中包括大多数PHP文件,而不包括任何非PHP文件。这个是可能的吗?多么?
发布于 2021-10-07 08:13:11
您的exclude设置不起作用,因为它不与include重叠。
PhpCodeCoverage库过去有单独的列表-白名单和黑名单,但黑名单在几个主要版本之前被删除。exclude现在所做的就是从白名单中删除文件,并且不能删除从未出现在白名单中的文件。
您的问题的解决方案是在include列表中添加api_base/system/目录。
coverage:
enabled: true
include:
- api_base/api/web/*
- api_base/system/*
exclude:
- api_base/system/config.php更新2021-10-10:
要排除非PHP文件,请更改include规则以仅匹配.php文件:
- api_base/api/web/*.phphttps://stackoverflow.com/questions/69443881
复制相似问题