我使用 phpunit & phpundercontrol 在每个构建中运行 RC Selenium。
2 回答
PHPUnit 允许您实现自己的TestListener。自定义测试侦听器在PHPUnit_Framework_TestListener接口中实现抽象方法。具体来说,您的侦听器将实现:
- 开始测试套件()
- 结束测试套件()
- 开始测试()
- 结束测试()
- 添加错误()
- 添加失败()
- addSkippedTest()
- addIncompleteTest()
附加 TestListner 后,每次在测试套件中发生相应事件时,都会调用这些方法。将编写这些方法以在您将创建的测试结果数据库上执行INSERT和UPDATE 。
将侦听器类附加到您的套件就像添加一个标记到phpunit.xml配置文件。例如:
<phpunit>
<testsuites>[...]</testsuites>
<selenium>[...]</selenium>
<listeners>
<listener class="Database"
file="/usr/loocal/share/pear/PHPUnit/Util/Log/Database.php">
</listeners>
</phpunit>
这就是你所需要的!
事实上,PHPUnit 已经附带了我刚才描述的侦听器的工作版本(PHPUnit_Util_Log_Database),以及两个不同的数据库模式定义。
在许多系统上,此类将位于/usr/local/share/pear/PHPUnit/Util/Log/Database.php,而架构位于/usr/local/share/pear/PHPUnit/Util/Log/Database/MySQL。 sql和/usr/local/share/pear/PHPUnit/Util/Log/Database/SQLite3.sql。根据您使用的 DBMS,您可能需要进行一些调整。
请参阅文档的这些部分(它不会让我发布两个链接:
htp://www.phpunit.de/manual/3.4/en/api.html#api.testresult.tables.testlistener
(StackOverflow 不允许我发布两个链接,因此您必须在第二个链接中更正 HTTP)
我正在解决同样的问题。
几天前在这里问了一个相关的问题。
我尝试使用 Selenium IDE、Selenium RC 和 perl。
总体策略:
您可以使更新版本的 phpunit 生成 TAP 输出(选项 --tap、--log-tap)。
(TAP 是测试任何协议 - 标准化输出格式)
解析日志文件以从 TAP 解析器对象中获取套件元数据,使用 perl 插入数据库,例如 "# Number of Passed": , "Failed", "Unexpectedly succeeded",