能否从PHPUnit运行HTML测试套件?

5

我希望能够测量selenium的HTML测试套件的代码覆盖率。因此,我想使用PHPUnit来执行测试套件,因为PHPUnit对代码覆盖分析提供了很好的支持。

那么问题来了:是否可以从PHPUnit运行HTML测试套件?

2个回答

5

简短回答

运行单个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运行的测试的代码覆盖率信息:

  1. PHPUnit/Extensions/SeleniumTestCase/phpunit_coverage.php复制到您的Web服务器的文档根目录中。
  2. 在Web服务器的php.ini配置文件中,将PHPUnit/Extensions/SeleniumTestCase/prepend.phpPHPUnit/Extensions/SeleniumTestCase/append.php配置为auto_prepend_file和auto_append_file。
  3. 在扩展PHPUnit_Extensions_SeleniumTestCase的测试用例类中使用
    protected $coverageScriptUrl = 'http://host/phpunit_coverage.php';
    来配置phpunit_coverage.php脚本的URL。

由于设置可能有些麻烦,我一直使用页面覆盖插件来了解HTML页面覆盖情况。


我想按照问题中所述保留HTML测试套件。我们仍然有一些PHP编码的测试用例和一些基于HTML的测试用例。 - Chris
进一步的调查显示,事实上是可能的。不知何故,我从未遇到过它。-- 使用这个(对我来说)新信息更新了我的答案。 - Potherca
太棒了。我会为你的答案提供奖金。谢谢! - Chris
非常欢迎。如果您在使用Selenium时遇到问题,这个链接也许会有用:https://dev59.com/HmXWa4cB1Zd3GeqPOJTJ#12297192 - Potherca

0

对 PHP HTML 输出进行单元测试是一个很好的想法。更多的人应该这样做,但事实证明过去并不那么简单。

我曾经遇到同样的问题,并找到了这个解决方案:https://packagist.org/packages/phpfui/html-unit-tester 它可以从 URL、文件或字符串片段验证 HTML 和 CSS。

为了实现你想要的功能,你应该设置一个本地 Web 服务器,让你的测试可以访问你的应用程序。你可能已经有了这个,但请确保它适用于你的本地环境和任何运行测试的服务器。

然后,你可以使用 assertValidUrl 方法和指向你本地服务器的路径。由于你不是在与模板进行比较,而只是测试 HTML 是否有效,所以你可以快速发现最近引入的 HTML 错误。

希望这能帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接