要使用phpunit_coverage.php
,我需要将auto_prepend_file
中的auto_append_file
和php.ini
属性设置为指定的文件prepend.php
和append.php
。在两个脚本中都会检查cookie以确保测试正在运行:
if ( isset($_COOKIE['PHPUNIT_SELENIUM_TEST_ID']) &&
问题是这个cookie保存为localhost的cookie,而不是webserver的cookie。所以当检查时,它没有设置,xdebug也没有启动。
Selenium和webserver位于不同的机器上,这可能是导致此错误的原因吗?
情况显示在此处:
答案 0 :(得分:1)
类似的问题。我首先想到了一个域名问题,因为经过测试的网站是在虚拟主机上。
但我发现调用$this->url('some_url')
似乎默默地删除了PHPUNIT_SELENIUM_TEST_ID
Cookie。
我的解决方法是在我的测试用例中覆盖url()
方法,以便在调用url()
后重置Cookie。
protected function url($url =null)
{
try {
$cookie = $this->cookie()->get('PHPUNIT_SELENIUM_TEST_ID');
}
catch (Exception $e) {}
$result = parent::url($url);
if (isset($cookie)) {
$this->cookie()->add('PHPUNIT_SELENIUM_TEST_ID', $cookie)->set();
}
return $result;
}
现在可以正确创建代码覆盖率文件。