私は問題を単一のユニットテストに絞り込みました。これには、かなりクリーンなdbalクエリが含まれます。クエリには入れ子集合が含まれ、階層カテゴリの3レベルから4レベルに移動すると失敗します。実行時間の点でほとんど変更はありません。そして、私が使用している機能は10レベルで問題ありません。ただし、PhpUnitで4つ以上のレベルでテストを実行すると、致命的なエラーが発生します。
*要約すると、通常よりも1秒以上かかる可能性のあるクエリ、またはタブで少し多くのリソースが必要になりphp fatal error
ますPHPUnit
*
そして、エラーは次のようになります。
致命的なエラー:92行目の/var/www/my-app/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Debug/Stopwatch.phpの未定義のメソッドMonolog \ Formatter \ LineFormatter :: stopEvent()を呼び出す
ここの誰かが92行目でもphpUnitの致命的なエラーの問題を抱えていました。関係ありますか?
私は私の問題を回避するためのいくつかの風変わりな方法(以下)をリストしましたが、なぜそのような基本的なテストがこの問題を引き起こしているように見えるのか知りたいです。
processIsolation
「true」に設定してPhpUnitを実行します。static::createClient();
setUpBeforeClass()メソッドでにアクセスしないでください
#symfony(Stof)の尊敬されているメンバーに、@ loggerをサービスに不適切にDIしているようだと提案してもらいました。しかし、これはロガーサービスを利用したことによるものではないことを確認しました。私のサービスのいずれかから。
たぶん、この問題はタイムアウトと関係がありますか?(エラーはとに言及stopevent
しますstopwatch
)。あるいは、このエラーはでのアクセスと関係があるかもしれません。その後、アクセス$client = static::createClient();
はsetUpBeforeClass()
前のテストで再び行われます。それにもかかわらず、私は混乱しています。私が知る限り、Symfony2(2.1.1)インストールの他のすべてが機能しています。完全に元気です。
*Stopwatch.phpの行92..githubソースファイルはこちら*
/**
* Stops an event.
* @param string $name The event name
* @return StopwatchEvent A StopwatchEvent instance
*/
public function stop($name)
{ return end($this->activeSections)->stopEvent($name);}