代码之家  ›  专栏  ›  技术社区  ›  Chris

是否可以从PHPUnit运行HTML测试套件?

  •  5
  • Chris  · 技术社区  · 12 年前

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

    因此:是否可以从PHPUnit运行HTML测试套件?

    2 回复  |  直到 12 年前
        1
  •  5
  •   Potherca Zaid Amireh    12 年前

    简短回答

    运行单独的HTML测试文件不是问题,但是运行HTML套件文件似乎不起作用。只要您将套装中的所有HTML测试文件单独放在一个目录中,您就可以运行 runSelenese($folderName)

    长话短说

    直到我做了更多的挖掘,我才知道直接运行SeleniumHTML文件是可能的。

    习惯于 要做的是首先使用 Selenium IDE PHP Formatter plugin for Firefox

    显然这是没有必要的。一直在底部 Chapter 17. PHPUnit and Selenium the manual states 以下为:

    使用 runSelenese($filename) 方法,您还可以从它的Selenese/HTML规范中运行Selenium测试。此外,使用静态属性 $seleneseDirectory ,您可以从包含Selenese/HTML文件的目录中自动创建测试对象。将在指定的目录中递归搜索预期包含Selenese/HTML的.htm文件。示例17.5显示了一个示例。

    示例17.5:使用Selenese/HTML文件目录作为测试

    <?php
    require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
    
    class SeleneseTests extends PHPUnit_Extensions_SeleniumTestCase
    {
        public static $seleneseDirectory = '/path/to/files';
    }
    ?>
    

    一旦您在PHPUnit中有了测试,您就可以使用它从Selenium服务器获得代码覆盖率。

    再一次 from the manual 以下为:

    PHPUnit_Extensions_SeleniumTestCase可以收集代码覆盖率 通过Selenium运行的测试信息:

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

    由于设置起来可能有点麻烦,我一直只使用 Page Coverage plugin 以深入了解HTML页面覆盖率。

        2
  •  0
  •   Bruce Wells    5 年前

    单元测试PHP HTML输出是个不错的主意。应该有更多的人这样做,但事实证明,过去并没有那么简单。

    我也有同样的问题,可以接受: https://packagist.org/packages/phpfui/html-unit-tester 它可以从URL、文件或字符串片段验证HTML和CSS。

    要执行您想要的操作,您应该设置一个本地web服务器,您的测试可以为您的应用程序访问该服务器。您可能已经有了这个,但请确保它适用于您的本地env和运行测试的任何服务器。

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

    希望这能有所帮助。