我们使用Codeigniter并有2个选项来调用我们的API控制器:
-
我们可以使用通过Curl调用控制器url的客户端,
-
我们可以使用从命令行调用控制器的客户端 .
这对我们网站的功能来说非常好 . 但是,当我运行PHPUnit时,控制器的覆盖率报告是空白的,而所有模型的覆盖率报告都是正确的 .
在跟踪xdebug如何创建报告时,似乎使用基于Curl的客户端或CLI客户端在测试函数范围之外调用,因此xdebug_get_code_coverage()不会跟踪执行的控制器代码 .
是否可以配置xdebug以识别此方案中的代码覆盖率?是否可以在PHPUnit测试函数的范围内调用Codeigniter控制器?还有其他可能的解决方
2 回答
是的,这很容易实现 . 有关它的更多信息,请参见http://www.phpunit.de/manual/current/en/selenium.html
基本上你在web根目录中放了一些特殊文件:
当使用GET参数
PHPUNIT_SELENIUM_TEST_ID
运行URL时,将跟踪覆盖率信息,并且PHPUnit可以通过请求coverageScriptUrl
来收集它 .另一种选择:参见我们的SD PHP Test Coverage工具 .
它没有xdebug的具体问题 . 它用于检测脚本以收集测试覆盖率数据;一旦检测完毕,无论脚本如何执行,您都将获得测试覆盖率数据 . (检测是临时的;一旦收集了测试覆盖率数据,就会抛弃已检测的代码,因此它不值得麻烦;大多数用户只需列出所有PHP脚本 .