在GitLab中代码覆盖率始终未知

时间:2018-08-29 14:09:16

标签: unit-testing gitlab code-coverage gitlab-ci gitlab-ci-runner

我试图了解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部分中,我进行了以下设置: enter image description here

如果您需要更多信息,请告诉我,我会添加它们。感谢所有帮助,谢谢!

1 个答案:

答案 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部分下也使用了它。

现在代码覆盖率正确地显示了我的期望值。