2011-11-24 3 views
6

のテストでは、SeleniumCurlを使用して、別の開発サーバーでページを開きます。サーバーBには、Webサイトを提供するApacheサーバーがあります。サーバーAはプロジェクトファイルを開発サーバーBに同期化(Rsync)してテストジョブを開始するので、プロジェクトファイルは両方のサーバーで同じになります。PHPで収集するリモートコードカバレッジ

PHPでコードカバレッジ統計情報をリモートで収集するには、どのような可能性がありますか?サーバBで

:我々はすでに(PHPUnitのがstart/stop collecting code coverage reportのでできる直接プロジェクトファイルを使用して)サーバーA上でローカルに実行ユニットテストでコードカバレッジを収集するために

アップデートをXdebugを使用している

Webサイトは、Apacheによって実行されるPHPインスタンスによってレンダリングされます。サーバーAのPHPインスタンスであるSelenium/Curlを使用してテストを実行すると、コマンドラインのバージョンが使用されます。そのインスタンスは、ユニットテスト(他のサーバーを使用していないとSelenium /カールを使用していない)を実行しているとき、私たちはこのようなコマンドを使用し、ApacheがサーバBに

を実行することをPHPのインスタンスをプロファイルすることはできません。

phpunit --coverage-html ./results/codecoverage/ ATestFile.php 

これは、PHP CliのXdebugを使用して、 "ATestFile.php"のテストのコードカバレッジレポートを生成します。

+0

あなたは今までに乗り越えた問題について具体的に説明できますか?サーバーBでもXDebugを起動できると思われるので、問題は何ですか? –

+0

私の更新プログラムはあなたの質問に答えましたか?問題は、コードベース/プロジェクトファイルを使用してPHPインスタンスを実行するサーバーBの場合、サーバーAでコードカバレッジレポートを生成することです。 – HNygard

+0

これは、サーバーAですべてのテストが実際に実行されているため、サーバーBでPHPUnitを実行したくないという点です。 XDebugは依然としてサーバーB上で動作します。PHPUnitを使用しないでください。私はこれがあなたを「生の」XDebugに晒すと思うので、PHPUnitがそこからデータを収集する方法を理解しなければなりません。興味があれば、XDebug以外のソリューションを提供することができます。このソリューションは、Bから(そしてあなたが気にしているシステムAから)カバレッジデータを収集できるようにします。 –

答えて

3

GithubのPHPUnit-Seleniumプロジェクトにはこのための解決策があります。私は、PHPUnit 3.5に組み込まれている古いバージョンは同じものだったと思います。 PHPUnit_Extension_Selenium_TestCase folderにはサーバーBのコードカバレッジ情報をキャプチャするためのファイルがあります.2つのPHPスクリプト(適切にはprepend.phpappend.phpという名前)をそれぞれ追加して追加する必要があります。

説明はPHPUnit documentation section on Seleniumです。 「追加」を検索します。サーバーB

PHPUnitの(あなたが合うように、それを使用するかどうか)および/またはXDebugを(doesnのとは完全に独立した方法で私たちのPHP Test Coverage Toolコレクトテストカバレッジデータからレポートを生成することができます代替案を求め

+0

私はそれを動作させています。正しいインクルードパスを設定して、新しいFirefox 8の代わりにChromeを実行して、Seleniumがクッキーを正しく設定できなかった。 あなたの回答を編集して私の経験の一部を取り入れるのは難しいですか? – HNygard

+0

絶対に編集してください! :) –

1

OP XDebugをまったく使用しないでください)。

これは、役に立つと考えられる方法(サーバーAからの外部リクエストを含む)でコードを実行し、コードカバレッジデータを取得できることを意味します。

対象コードのスナップショットをいつでも尋ねることができます。テストカバレッジツール用のこの表示エンジンは、そのスナップショットをソースコードにオーバーレイされたカバレッジの可視表示に変換し、および/または要約レポートを生成する。

関連する問題