2012-04-02 12 views
1

PHPUnitに奇妙な問題があります。私はPHPUnit 3.6.5を使用しなければならない開発者チームのプロジェクトに取り組んでいます。ほとんどの場合、私のPHPUnitはうまく動作し、他の開発者のマシンと同じ結果をもたらします。しかし、時にはある種の回線が私のマシンではなく、他の開発者のマシン上にあることがわかります。最近のシナリオは次のとおりです。PHPUnitコードカバレッジに特定の行が含まれていません

  • ボブは、更新したばかりの新しいファイルをチェックインしています。彼はユニットテストがこのファイルに合格し、95%のコードカバレッジを持っていることを確認しました。このチェックを実行した後、ファイルをチェックインし、ビルドされ、ユニットテストが実行されます。ユニットテストがサーバ上で失敗した場合、ビルドは赤くなり、誰もチェックインできません。
  • サーバはphpunitテストを実行し、それに合格します。私自身は、変更の私自身のセットを作った後のPerforceリポジトリ
  • から最新の情報を取得します含め

  • 他の開発者は、私は、アプリケーションのPHPUnitテストのすべてを実行するが、私は十分に持っていないファイルのいずれかを気づきますコードカバレッジそれはBobがちょうどチェックインしたファイルです。私のチームの他の開発者の一部に確認し、ファイルは問題なくコードカバレッジを渡します。私は、コードカバレッジレポートを確認すると、私は、以下を参照してください。

    array_walk(                       
        $variable1,                       
        function($val,$key) use(&$variableData, &$variable2)            
        {                         
         $variableData[$variable2][$key] = 1;                
        }                         
    ); 
    

$変数1、
機能($ valを、$キーを)

(& $ variableData、& $変数2)を使用します

この2行は対象外です!なぜ私のphpunitがこれらの行をカバーしたくないのか分かりません。他の開発者と同じバージョンのPHPUnitを持っていて、自分のマシンでは正常に動作しますが、私のものではうまく動作しないため、これが原因であることに気づいていない設定が必要です。私はまた、このような文で同じ問題を見ている:{他}

if ($var === 1) { 
     echo 'yes'; 
    } else { 
     echo 'nope'; 
    } 

さて、ユニットテストは、両方の条件をカバーします、しかし、それは次の行をカバーしていません

これは意味がありますか?最も奇妙なのはそれがほとんどの時間で動作するということですが、何が起こっているのかを示すパターンはありませんが、この動作を持つ場所はいくつかあります。私は他の開発者に私のマシンでこの問題を見てもらえませんでした。彼らは困惑していて何が原因であるのか説明できません。問題は、ボブのファイルに触れていなくても、私のローカルでは失敗しているため、私の変更をチェックインできないということです。誰もこの問題に遭遇したことはありますか?私はPHPのユニットをアンインストールして再インストールしようとしていますが、それ以外は言葉を失います。どんな助けでも大歓迎です!ここに私のスペックがあります:

PHPUnit:バージョン3.6.5 オペレーティングシステム:OS X 10.6.8 PHP:PHP 5.3.8-ZS5.5。0(CLI)(組み込み:2011年8月24日11時03分29秒)を Zendのデバッガ: のXDebugをオフにして: のZend Optimizerの+に転じ:

よろしく、

ウィル

+0

PHPUnit(XDebugを実行中)が、実行された行を教えてくれたと思っていました。あなたの配列ウォークラインは、インタプリタが見ているように実行されていないと思います。あなたの同僚は、これらと同じ正確な行を見ていますか? –

+0

...あなたの注意をもっと慎重に読んでください。ボブは良いカバレッジを得て、フェッチし、コードを変更して、カバレッジが正しくないのですか?クリーンなものを取り出してテストを実行するとどうなりますか?なぜそれはあなたが変更したものではないと確信していますか? –

+0

あなたはすべて同じPHP/xdebugバージョンを実行していますか? – edorian

答えて

1

実行オフと実行行はxdebugによってPHPUnitに報告されます。 xdebugの異なるバージョンは、報告されている行では異なるものがあります。

あなたが間違っていると思われる場合は、簡単なテストケースを用意し、xdebug's issue trackerにバグを開いてください。