3

PHPUnit 3.5.10 を使用していますが、clover-coverage の xml レポートを生成しようとすると問題が発生します。

coverage-html を使用したエクスポートは正常に機能します。また、カバレッジ レポートから十分な数のファイルを除外すると、clover.xml ファイルが生成されます。しかし、テスト スイートを実行すると、「コード カバレッジ データを XML ファイルに書き込んでいます。しばらく時間がかかる場合があります。」というメッセージが表示され、実行は黙って失敗します。25 回に 1 回、「セグメンテーション違反」メッセージが表示されます。

最初に、この問題を PHP_CodeCoverage::getSummary() 関数に突き止めましたが、コード カバレッジをホワイトリストで制限すると、プログラムはこのエラーを回避しました。

次に、PHP_Token_Stream::scan() 関数でコード カバレッジ レポートがタイムアウトするようです。事実上、約 31,000 トークンの累積が処理された後、メソッドはエラー メッセージなしで単純に停止します。

配置したトレース コードの量と、メソッドが処理するトークンの数に相関関係があることに気付きました。そのため、プログラムのメモリが不足しているように見えます。

一連のコード ファイルをロードし、ファイルを次々にロードして PHP_Token_Stream をテストするテストを作成しました。これは期待どおりに機能しているようで、テスト スイートのコンテキスト内で表示されるエラーを再現しません。

クローバー カバレッジ レポートを出力する方法について何か提案はありますか?

4

1 に答える 1

2

プロジェクトの単体テストのほとんどを 1GB で実行しましたが、コード カバレッジを可能にするために最大 2GB にキックする必要がありました。を使用して PHPのメモリ制限を増やしてみてください

ini_set('memory_limit', '1024M');
于 2011-03-15T05:35:59.287 に答える