我试图了解GitLab管道,经过几次尝试,我能够成功地自动化我的单元测试。现在,我正在尝试将代码覆盖率徽章添加到我的项目和/或自述文件中,但它似乎总是显示unknown
。
文件:
+ application
+ system
- unit-tests
- tests
UtilTest.php
autoload.php
phpunit
.gitignore
.gitlab-ci.yml
.htaccess
index.php
readme.md
.gitlab-ci.yml:
image: php:5.6
stages:
- test
app:unit-tests:
stage: test
script:
- php ./unit-tests/phpunit --bootstrap ./unit-tests/autoload.php ./unit-tests/tests
coverage: '/Code Coverage: \d+\.\d+/'
在项目的Test coverage parsing
部分中,我进行了以下设置:
如果您需要更多信息,请告诉我,我会添加它们。感谢所有帮助,谢谢!
答案 0 :(得分:1)
因此,我可以通过使用PHP 7.2作为Docker映像并在xdebug
调用上安装before_script
来解决此问题。
.gitlab-ci.yml:
image: php:7.2
stages:
- test
before_script:
- pecl install xdebug
- docker-php-ext-enable xdebug
app:unit-tests:
stage: test
script:
- php ./unit-tests/phpunit --bootstrap ./unit-tests/autoload.php ./unit-tests/tests --coverage-text --colors=never
coverage: '/^\s*Lines:\s*\d+.\d+\%/'
我必须使用PHP 7.2,因为当我尝试运行pecl install xdebug
时说它需要PHP7。理想情况下,我想使用PHP 5.6,因为这是我们当前服务器所拥有的,因此测试使用的是相似版本,但是我将保持现状。
我必须在--coverage-text --colors=never
调用上添加script
才能输出数字。然后,在coverage
调用中,将其更改为'/^\s*Lines:\s*\d+.\d+\%/'
,在项目设置的Test coverage parsing
部分下也使用了它。
现在代码覆盖率正确地显示了我的期望值。