首页 文章

Codeigniter API调用的PHPUnit / Xdebug代码覆盖率

提问于
浏览
2

我们使用Codeigniter并有2个选项来调用我们的API控制器:

  • 我们可以使用通过Curl调用控制器url的客户端,

  • 我们可以使用从命令行调用控制器的客户端 .

这对我们网站的功能来说非常好 . 但是,当我运行PHPUnit时,控制器的覆盖率报告是空白的,而所有模型的覆盖率报告都是正确的 .

在跟踪xdebug如何创建报告时,似乎使用基于Curl的客户端或CLI客户端在测试函数范围之外调用,因此xdebug_get_code_coverage()不会跟踪执行的控制器代码 .

是否可以配置xdebug以识别此方案中的代码覆盖率?是否可以在PHPUnit测试函数的范围内调用Codeigniter控制器?还有其他可能的解决方

2 回答

  • -1

    是的,这很容易实现 . 有关它的更多信息,请参见http://www.phpunit.de/manual/current/en/selenium.html

    基本上你在web根目录中放了一些特殊文件:

    PHPUnit_Extensions_SeleniumTestCase可以收集通过Selenium运行的测试的代码覆盖率信息:将PHPUnit / Extensions / SeleniumTestCase / phpunit_coverage.php复制到您的Web服务器的文档根目录中 . 在您的web服务器的php.ini配置文件中,分别将PHPUnit / Extensions / SeleniumTestCase / prepend.php和PHPUnit / Extensions / SeleniumTestCase / append.php配置为auto_prepend_file和auto_append_file . 在扩展PHPUnit_Extensions_SeleniumTestCase的测试用例类中,使用protected $ coverageScriptUrl ='http://host/phpunit_coverage.php';配置phpunit_coverage.php脚本的URL .

    当使用GET参数 PHPUNIT_SELENIUM_TEST_ID 运行URL时,将跟踪覆盖率信息,并且PHPUnit可以通过请求 coverageScriptUrl 来收集它 .

  • 1

    另一种选择:参见我们的SD PHP Test Coverage工具 .

    它没有xdebug的具体问题 . 它用于检测脚本以收集测试覆盖率数据;一旦检测完毕,无论脚本如何执行,您都将获得测试覆盖率数据 . (检测是临时的;一旦收集了测试覆盖率数据,就会抛弃已检测的代码,因此它不值得麻烦;大多数用户只需列出所有PHP脚本 .

相关问题