PHPUnitのドキュメントでは、コードカバレッジデータを取得できると書かれています。
PHPUnit_Extensions_SeleniumTestCaseは、Seleniumを介して実行されるテストのコードカバレッジ情報を収集できます。
PHPUnit / Extensions / SeleniumTestCase/phpunit_coverage.phpをWebサーバーのドキュメントルートディレクトリにコピーします。
Webサーバーのphp.ini構成ファイルで、PHPUnit / Extensions / SeleniumTestCase/prepend.phpとPHPUnit/Extensions / SeleniumTestCase/append.phpをそれぞれauto_prepend_fileとauto_append_fileとして構成します。
PHPUnit_Extensions_SeleniumTestCaseを拡張するテストケースクラスでは、protected $ coverageScriptUrl ='http://host/phpunit_coverage.php';を使用します。phpunit_coverage.phpスクリプトのURLを構成します。
カバレッジ情報を出力するためにこれを取得することができませんでした。通常の単体テストでコードカバレッジ情報を取得できます。
で実行されているアプリの場合、http://localhost/ts2_templates/
にコピーphpunit_coverage.php
しましたhttp://localhost/phpunit_coverage.php
。
php.iniに以下を追加しました。
auto_prepend_file = "/path/to/pear/share/pear/PHPUnit/Extensions/SeleniumTestCase/prepend.php"
auto_append_file = "/path/to/pear/share/pear/PHPUnit/Extensions/SeleniumTestCase/append.php"
...そしてそれらがで呼び出されていることを確認しましたdie("yep it's me");
。
最後に、テストケースに次のものを追加しました。
<?php
class WebTest extends PHPUnit_Extensions_Selenium2TestCase
{
# added line below
protected $coverageScriptUrl = 'http://localhost/phpunit_coverage.php';
protected function setUp()
{
$this->setBrowser('firefox');
$this->setBrowserUrl('http://localhost/ts2_templates');
}
public function testTitle()
{
$this->url('http://localhost/ts2_templates');
$this->assertContains('test', $this->title());
}
}
?>
PHPStormによって生成されたコードカバレッジでテストを実行するためのコマンドは次のとおりです。
/Applications/MAMP/bin/php5.3/bin/php -dxdebug.coverage_enable=1 /private/var/folders/pp/0t4y41f95j5313qm_f8b42fw0000gn/T/ide-phpunit.php --coverage-clover /path/to/coverage/ts2_templates$WebTest.coverage --no-configuration WebTest /Users/Ian/php/ts2_templates/tests/WebTest.php
カバレッジXMLファイルの出力は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1341015508">
<project timestamp="1341015508">
<metrics files="0" loc="0" ncloc="0" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
</project>
</coverage>
テスト自体は合格です。
コードのどこにもexitまたはdieステートメントがないことを確認しました。
何か案は?