2010-11-18 14 views
2

Zend FrameworkでPHP Unitを使用し始めたばかりで、memory_limitに問題があります。現在のところ、メモリ制限は32Mに設定されています。すべてのテストを実行すると、致命的なエラーが発生します。Zend Frameworkメモリ問題のあるPhpUnit

メモリサイズが33554432バイトになりました。

現在、私は7ファイル、125テスト、332アサーションを持っています。 私はコントローラをテストするだけです。 いくつかのテストで@dataProviderを使用し、1から5のデータセットを使用しています(最初はファイルから読み込みましたが、テストファイルに直接データを書き込もうとしましたが、まだメモリの限界に達しています)

私の質問は、phpunitベースのテストのためのあなたの通常のメモリの制限は何ですか? メモリテストを改善するために、どこで調べる必要がありますか?どんなアドバイスも素晴らしいでしょう。

おかげで、 ガブリエル

+0

PHPUnitのバージョンとZSのバージョンは何ですか? –

+0

PHPバージョン5.2.8、PHPUnit 3.4.2、Zend Frameworkバージョン1.10.8 –

答えて

3

私のテストスイートが300Mを超えて128Mのメモリ制限を超えた後も、同様の問題が発生しました。
私は、独立したプロセスでテストケースを実行するのに役立ちました。

phpunit --process-isolation 

たりphpunit.xmlの設定に追加します。:

<phpunit bootstrap="./application/bootstrap.php" 
    processIsolation="true"> 
+0

偉大な、それは私の問題を解決した。今は単体テストがやや遅くなっていますが、それは私が暮らすことができる問題です。ありがとう。 –

+0

@Vikaあなたのアドバイスを試み、 'RuntimeException:Zend OptimizerにZend Engine APIバージョン220060519が必要です。 インストールされているZend Engine APIバージョン220090626が新しいです。 最新のZend Optimizerについては、Zend Technologies(http://www.zend.com/)にお問い合わせください。 – zavg

0

は、私は、デフォルトのメモリ設定(128M)とPHP 5.3.3を実行して、決してZend Frameworkの上のユニットテストアプリケーションで問題がありました。

+0

あなたのアプリケーションはどれくらいの規模ですか?そこにいくつのテストがありますか? –

+0

特に、コードベースは約20MBで、今は約300のテストケースがあります。 – netcoder

1

別のソリューションは、バックアップとすべてのテストの後にグローバルな状態を復元するオフにするだろうあなたは、これはどちらかのコマンドラインから行うことができます。 PHPUnitはデフォルトでこれを行い、テストスイートのメモリ使用量を1000 MBから90 MBに削減しました。アサーション、80,000行のコード、ライブラリを持たない約1200ファイル

0

古いアプリケーションでは、各テスト後にメモリが増加し、1G以上のメモリが使用されるという問題がありました。 これを解決するために、私はさまざまなことを試みました。 ()

  1. はティアダウンで、あなたのテストクラスの変数をクリーンアップ:最高の仕事を何 でした。
  2. は、bootstrap()、クラスリソース、およびプラグインリソースで読み込まれるリソースを識別します。その一つが記憶増加の原因でした。コードを見つけて固定すると、使用量が10倍に減少しました。
  3. ガーベジコレクションを有効にし、tearDown()でgc_collect_cycles()を呼び出します。
0

phpunit --process-isolationは、別々のPHPプロセスで各テストを実行するので、テストははるかに低速です。代わりに、php.iniのmemory_limitを増やすことができます

関連する問題