ビルドごとに phpunit と phpundercontrol を使用して RC Selenium を実行しています。
2 に答える
PHPUnit を使用すると、独自のTestListenerを実装できます。カスタム テスト リスナーは、抽象メソッドをPHPUnit_Framework_TestListenerインターフェイスに実装します。具体的には、リスナーは次を実装します。
- startTestSuite()
- endTestSuite()
- startTest()
- テスト終了()
- addError()
- addFailure()
- 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 ) の動作バージョンと、2 つの異なるデータベース スキーマ定義が既に付属しています。
多くのシステムでは、このクラスは/usr/loocal/share/pear/PHPUnit/Util/Log/Database.phpにあり、スキーマは/usr/loocal/share/pear/PHPUnit/Util/Log/Database/MySQL にあります。 sqlおよび/usr/loocal/share/pear/PHPUnit/Util/Log/Database/SQLite3.sql。使用している DBMS によっては、微調整が必要になる場合があります。
ドキュメントの次のセクションを参照してください (2 つのリンクを投稿することはできません:
htp://www.phpunit.de/manual/3.4/en/api.html#api.testresult.tables.testlistener
(StackOverflow では 2 つのリンクを投稿できないため、2 つ目のリンクの HTTP を修正する必要があります)
私は同じ問題に取り組んでいます。
数日前にここで関連する質問をしました。
Selenium IDE、Selenium RC、および perl を使用した私の試み。
一般的な戦略:
phpunit の新しいリリースで TAP 出力を生成できます (オプション --tap、--log-tap)。
(TAP は Test Anything Protocol - 標準化された出力形式)
ログファイルを解析して、TAP パーサー オブジェクトからスイート メタデータを取得し、perl を使用してデータベースに挿入します。