我希望能够测量selenium的HTML测试套件的代码覆盖率。因此,我想使用PHPUnit来执行测试套件,因为PHPUnit对代码覆盖分析提供了很好的支持。
那么问题来了:是否可以从PHPUnit运行HTML测试套件?
我希望能够测量selenium的HTML测试套件的代码覆盖率。因此,我想使用PHPUnit来执行测试套件,因为PHPUnit对代码覆盖分析提供了很好的支持。
那么问题来了:是否可以从PHPUnit运行HTML测试套件?
运行单个HTML测试文件不是问题,但运行HTML套件文件似乎不起作用。只要将一套HTML测试文件放在一个目录中,您就可以直接运行runSelenese($folderName)
在进行更深入的挖掘之前,我根本不知道可以直接运行Selenium HTML文件。
我曾经做的是使用Firefox的Selenium IDE PHP格式化器插件先将它们转换/导出。
显然这是不必要的。在第17章 PHPUnit和Selenium
手册的底部指出:
Using the
runSelenese($filename)
method, you can also run a Selenium test from its Selenese/HTML specification. Furthermore, using the static attribute$seleneseDirectory
, you can automatically create test objects from a directory that contains Selenese/HTML files. The specified directory is recursively searched for .htm files that are expected to contain Selenese/HTML. Example 17.5 shows an example.Example 17.5: Use a directory of Selenese/HTML files as tests
<?php require_once 'PHPUnit/Extensions/SeleniumTestCase.php'; class SeleneseTests extends PHPUnit_Extensions_SeleniumTestCase { public static $seleneseDirectory = '/path/to/files'; } ?>
如果您在PHPUnit中有测试,您可以使用它从Selenium服务器获取代码覆盖率。
同样,来自手册:
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。
由于设置可能有些麻烦,我一直使用页面覆盖插件来了解HTML页面覆盖情况。
对 PHP HTML 输出进行单元测试是一个很好的想法。更多的人应该这样做,但事实证明过去并不那么简单。
我曾经遇到同样的问题,并找到了这个解决方案:https://packagist.org/packages/phpfui/html-unit-tester 它可以从 URL、文件或字符串片段验证 HTML 和 CSS。
为了实现你想要的功能,你应该设置一个本地 Web 服务器,让你的测试可以访问你的应用程序。你可能已经有了这个,但请确保它适用于你的本地环境和任何运行测试的服务器。
然后,你可以使用 assertValidUrl 方法和指向你本地服务器的路径。由于你不是在与模板进行比较,而只是测试 HTML 是否有效,所以你可以快速发现最近引入的 HTML 错误。
希望这能帮到你。