请原谅我,但是我已经花了一段时间没有用,所以我可能有点冗长。
背景
我有一个在Docker容器中运行Apache的PHP 7.2.14应用程序。我已启用XDebug v2.6.1,并且可以看到同时使用php --version
和php -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()
的结果,并且看到的跟踪都与测试框架有关,但是没有提及我知道我正在使用验收测试激活的应用程序文件。>
由于我已经精疲力尽,我急于寻求帮助。