15

私は現在、Zend FrameworkをPHPUnitと組み合わせて使用​​して、アプリケーションの単体テストを実行しています。HudsonがPHPUnitシェルコマンドを実行すると、コードカバレッジの生成中にPHPの最大メモリ制限に達します。私は現在、334のアサーションで合計41のテストを行っています。

-d memory_limit=768Mスイッチを使用してmemory_limit設定を768Mに上げることで、このエラーを正常に排除しました。ただし、テスト/アサーションの総数とともに複雑さが増すにつれて、コードカバレッジ統計用のHTMLを生成するための十分なメモリがなくなるのではないかと心配しています。

OS: CentOS 5.5
コントロールパネル: WHM / cPanel
CIサーバー: Hudson

/usr/local/bin/phpunit 
  --verbose  
  -d memory_limit=512M  
  --log-junit ../../build/logs/phpunit.xml   
  --coverage-clover ../../build/logs/coverage/clover.xml   
  --coverage-html ../../build/logs/coverage-html/  

致命的なエラー:許可されたメモリサイズ536870912バイトが使い果たされました

変更をコミットして残りをHudsonに処理させる前に、開発にWindows7を使用します。W7内で同じコマンドを実行している間、メモリ使用量が340MBを超えることはありませんでした。

4

3 に答える 3

15

コードカバレッジに含まれるファイルの数を減らし、PHPの全体的なメモリ制限を増やすことで、基本的にこのエラーを解消することができました。Zend Framework全体が、非常に大きなコードカバレッジに含まれていました。

于 2010-11-23T01:00:00.210 に答える
2

xdebugプロファイリングを有効にしていますか?有効にしている場合は、無効にしてみてください。私は以前にこの問題を経験しました、そしてそれはphpの拡張機能(特にxdebugプロファイリングおよび/または含まれる階層ビューア)に帰着しました

于 2010-10-14T14:25:16.110 に答える
0

2019年現在、PHPUnitでPCOVドライバーを使用して、コードカバレッジレポートを生成できます。私の経験では、プレーンなPHPUnitスイートを実行するよりもパフォーマンスがわずかに低下します。

XDebug、PHPDebug、およびPCOVを比較するいくつかの優れたベンチマークについては、「PHPUnitコードカバレッジ分析の高速化」を参照してください。PHPUnit8でPCOVを有効にする方法についても説明しています。

PHPUnit7以下でPCOVをセットアップする手順については、PHPPCOVのセットアップを読んでPHPUnitコードカバレッジを5倍高速化してください。

于 2020-09-08T21:04:30.910 に答える