随机重新启动测试

我正在尝试使用 PHPUnit 测试 symfony2应用程序。我有一个项目,一切都按预期运行,但在我的另一个项目中,我有一个奇怪的行为: 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.

由于我的其他项目运行时没有任何问题,所以我的代码中一定存在一些问题。但我不知道是什么触发了这种行为!日志没有显示任何意外/奇怪的情况。

剪辑

昨天,我注意到一些奇怪的事情: 由于一些不相关的原因,我决定从 MongoDB 切换到 MySQL。转换完成后,所有测试运行时都没有任何问题。我尝试了很多次,但我不能再复制它了。由于这只发生在我的功能测试中,我倾向于认为问题出在我的 WebTestCase 类上,它运行一些命令来清除和重新构建数据库。也许也使用 MongoDB 的人可以重现这种行为?

1950 次浏览

我建议检查数据库服务器的连接限制和池。

例如,如果您有100个连接的最大限制,并且一些测试保持连接开放(“泄漏”) ,那么您就达到了这个限制。

这也可以解释为什么有时候它可以工作,有时候它达到了极限,因为数据库可以同时处理其他任务,所以有时候你达到了极限,有时候当没有其他任务运行时,你可以成功地运行你的测试。

检查持久性网络连接和其他外部资源。