2012-03-07 12 views
72

PHPUnitを使用してsymfony2アプリケーションをテストしようとしています。 PHPUnitがすべてのテストの終わり近くでテストスイートをランダムに実行しなくなるか、テストスイートを終了してコードを書き直した後にテストを再開するという奇妙な振る舞いをしていますカバレッジ。それ以外の時間は正常に実行されます。ここphpunitがランダムにテストを再開する

は、(テストが終わっ再起動して上にある)何が起こっている目に見えるようにするいくつかの出力である:ここ

PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
...........PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
...PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
............PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
............PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
.................. 

Time: 01:03, Memory: 43.00Mb 

OK (83 tests, 145 assertions) 

Writing code coverage data to XML file, this may take a moment. 

Generating code coverage report, this may take a moment. 

は、すべてのテストを実行した後の再起動テストスイートの例である:

PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
.................. 

Time: 01:29, Memory: 53.25Mb 

OK (83 tests, 145 assertions) 

Writing code coverage data to XML file, this may take a moment. 

Generating code coverage report, this may take a moment. 
PHPUnit 3.6.10 by Sebastian Bergmann. 

Configuration read from C:\workspace\cllctr\app\phpunit.xml 

................................................................. 65/83 (78%) 
............PHPUnit 3.6.10 by Sebastian Bergmann. 

私の他のプロジェクトは何の問題もなく実行されているので、コード内に問題があるはずです。しかし、私はこの動作を引き起こす可能性があるものを理解できません!ログに予期しない/奇妙なものは何も表示されません。

EDIT

昨日、私は奇妙な何かに気づいた:私はいくつかの理由は無関係な理由のMySQLへのMongoDBから切り替えることにしました。移行が完了した後、すべてのテストは問題なく実行されます。私は何度も試してみましたが、私はもうそれを再現できません。これは私の機能テストでのみ発生したので、問題はWebTestCaseクラスであり、データベースをクリアして再構築するコマンドを実行していると思う傾向があります。多分MongoDBを使っている人がこの動作を再現できるでしょうか?

+0

いつも同じ場所、65/83で起こっているようです。どのテストに到達しているのか調べることはできますか?実行時に '--verbose'オプションを使ってみてください。 –

+0

65/83は、行1で65個のテストが実行されたことを意味します(各ドットは1つのテストです)。 2行目で実行されたテストの数は同じではないことがわかります。そのため、1つのテストが失敗しているとは限りません。テストがうまくいくことがあり、時にはループすることもあるので、私はそれが1つのテストのためだとは思わない。しかし、私はさらに調査します! – Sgoettschkes

+1

私の悪い!私はその知識を私の脳のどこかに持っていました。ここでは質問があります - 孤立したPHPプロセスで各テストを実行していますか?それはこの異常な活動を引き起こす可能性があります。私たちはいつもあなたと同じバージョンのPHPUnitを使用していて、あなたが見ているものと同じようなものを見たことはありません! –

答えて

1

データベースサーバーの接続制限とプールを確認することをお勧めします。

たとえば、最大接続数が100で、テストの一部で接続が開いている(「リーク」)場合は、その限界に達します。

これはまた、データベースが他のタスクを同時に処理できるように、ときどき動作し、ときには限界に達する理由を説明するため、天井にぶつかったり、何も実行していないときにテストを正常に実行できます。

永続的なネットワーク接続およびその他の外部リソースを確認します。

関連する問題