在Docker中使用Codeception + Xdebug进行空代码覆盖

时间:2019-02-13 22:31:38

标签: yii phpunit xdebug codeception php-code-coverage

请原谅我,但是我已经花了一段时间没有用,所以我可能有点冗长。

背景
我有一个在Docker容器中运行Apache的PHP 7.2.14应用程序。我已启用XDebug v2.6.1,并且可以看到同时使用php --versionphp -m

正确加载了它。

这是一个Yii 1.1.13应用程序,我遵循了许多指南,将Codeception与c3.php一起使用。我还在与我的应用程序容器相同的docker网络上运行带有ChromeDriver 2.46.628388的侧面车载Selenium容器。

我已经能够对我的应用程序进行验收测试,但是当我尝试生成代码覆盖率时,会得到以下结果:

Code Coverage Report:
  2019-02-13 22:09:20

 Summary:
  Classes:  0.00% (0/1)
  Methods:  0.00% (0/11)
  Lines:    0.00% (0/153)

我故意降低测试数量,并且只覆盖一个文件,因此可以快速执行测试。我的codeception.yml文件是:

actor: Tester

paths:
  tests: protected/tests
  log: protected/tests/_log
  data: protected/tests/_data
  helpers: protected/tests/_support

settings:
  bootstrap: _bootstrap.php
  colors: true
  memory_limit: 1024M
  log: true
  debug: true

modules:
  enabled: [Yii1]
  config:
    Yii1:
      appPath: index-test.php
      url: http://container-name:80/index-test.php

coverage:
  enabled: true
  remote: true
  c3_url: http://container-name:80/index-test.php
  remote_config: codeception.yml
  include:
    - protected/controllers/SiteController.php

我的accept.suite.yml是:

class_name: AcceptanceTester

coverage:
  enabled: true
  remote: true

modules:
    enabled:
        - WebDriver:
              browser: chrome
              url: http://container-name:80
              host: selenium-container-name
              port: 4444
        - Yii1:
              appPath: '/var/www/html/index-test.php'
              url: 'http://container-name:80/index-test'
              part: init
        - \Helper\Acceptance

我的xdebug.ini选项是:

zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so

xdebug.var_display_max_depth = 5
xdebug.var_display_max_data = 5
xdebug.var_display_max_children = 5
xdebug.max_nesting_level = 250
xdebug.cli_color = 1

xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost
xdebug.remote_log = /tmp/xdebug.log
xdebug.remote_mode = req
xdebug.remote_port = 9000
xdebug.remote_autostart = 1
xdebug.coverage_enable = 1

我的index-test.php文件中包含c3.php。到目前为止,我的调试工作有所不同。我试图深入研究c3.php以了解为什么它为空,但是当我转储PHP_CodeCoverage对象时,我也失去了踪迹,而且它也是空的。

似乎xdebug无法正确分析应用程序!测试运行之后,我转储了xdebug_get_code_coverage()的结果,并且看到的跟踪都与测试框架有关,但是没有提及我知道我正在使用验收测试激活的应用程序文件。

由于我已经精疲力尽,我急于寻求帮助。

0 个答案:

没有答案