phpunit随机重启测试


73

我正在尝试使用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的人可以重现此行为?


看起来它总是在同一个地方发生,即65/83。您能找出要参加的考试吗?--verbose运行时尝试使用该选项。
乔恩·凯恩斯

65/83表示在第1行中,执行了65个测试(每个点是一个测试)。在第二行中,您看到执行的测试数量不相同,因此我怀疑这是一个失败的测试。由于测试有时会工作,有时还会循环,我怀疑这是因为一项测试。但我将进一步调查!
Sgoettschkes 2012年

1
我的错!我确实在大脑中的某处拥有该知识。这是一个问题-您是否在隔离的PHP流程中运行每个测试?这可能是导致这种异常活动的原因。我们一直在使用与您相同版本的PHPUnit,并且从未像您看到的那样疯狂!
乔恩·凯恩斯

19
phpunit --debug会告诉您它正在运行哪个测试。
Rygu 2012年

8
phpunit --testdox将显示测试名称-而不是点。
詹斯·科赫

Answers:


1

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

例如,如果您有100个连接的最大限制,并且某些测试使连接保持打开状态(“泄漏”),那么您将达到限制。

这也可以解释为什么有时有效,有时达到极限,因为您的数据库可以同时处理其他任务,所以有时您达到了顶峰,而其他时候什么也没有运行,您就可以成功运行测试。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.