まず、Reaching 100% Code Coverage with PHPUnitSOとHow to get 100% Code Coverage with PHPUnitSOを通過したとしましょう。私はどちらかの助けを借りて問題を解決することができませんでした。PHPUnitは、孤立して実行されたときに同じテストで異なるコードカバレッジ%を報告します
私の問題は、PHPUnitがテストスイート全体を実行した場合と比較して、同じテストで別のコードカバレッジ%を単独で実行すると報告していることです。私は特定のテストを指定せずにphpunit
を使用してテストの私の完全なスイートを実行する場合は、私は次のように受け取る
:私はphpunit test/src/artax/UsesRequestTraitTest
を使用して問題の唯一の特定のテストを実行するときに、私は次のカバレッジを取得します同じファイルのために:
ここでは、テスト用のソースコードは次のとおりです。
<?php
class UsesRequestTraitTest extends PHPUnit_Framework_TestCase
{
public function testIsInitiallyEmpty()
{
$traitObj = $this->getObjectForTrait('artax\UsesRequestTrait');
$this->assertAttributeEmpty('request', $traitObj);
return $traitObj;
}
/**
* @depends testIsInitiallyEmpty
* @covers artax\UsesRequestTrait::setRequest
* @covers artax\UsesRequestTrait::getRequest
*/
public function testSetterAssignsRequestProperty($traitObj)
{
$r = new artax\blocks\http\HttpRequest();
$traitObj->setRequest($r);
$this->assertEquals($r, $traitObj->getRequest());
}
}
注意を払った場合は、PHP5.4の特性をテストしていることがわかります。私はPHP5.4RC6を使用しています。また、xdebugのリリース版はまだPHP5.4をサポートしていないため、最新版2.2xdebugトランク版を使用しています。
これはまだあるため、新たなPHPのバージョンについてはまだ進化のサポートで働いていませんxdebugのか、PHPUnitのバグであること(?そうな)ことは可能ですが、私は心配を無駄にする前に、他の意見を取得したいです不必要なバグレポートでパーティーの時間を過ごす。誰もこれを引き起こすかもしれない何考えか、またはそれを修正する方法を私のオタクのOCDは私を100%カバレッジでこのギャップで狂ってしまわないのですか?
P. 60%カバレッジバージョンの実際のグラフィカルカバレッジレポートを表示します。
UPDATE
Iもの試験を形質メソッドの@covers
注釈を追加しようとした:以下発見として示される線は、テストが単独で実行されるとき(被覆)緑具体的なクラスはuse
ですが、これはどちらの特性にも役立ちませんでした。
そのファイルの最後の隔離されたテストのカバレッジのみである可能性がありますか? – hakre
@hakreあなたが何を求めているのか分かりません。それが価値あるものであれば、別のタイプのオブジェクト( '$ request'よりも)を扱う点を除けば、同じ特性の別の特性ファイルに対して同じ動作を経験します...本当に変わったのは、他の2つの特性ファイルが完全なテストスイートがカバレッジを正確に報告する同じテストで同じフォーマット。私は何かが正しく報告する原因となるテストの違いについて何度も見てきましたが、別のテストは正しくないが役立たない。 – rdlowrey
テストを単独で実行すると、コードカバレッジも分離されていると思っています。書き込まれると、おそらく最後のカバレッジデータだけがHTMLに書き込まれます(以前のHTMLダンプを同じファイル名で上書きします)。それが私の言いたいことです。 – hakre