我已将我的问题缩小到一个涉及非常干净的 dbal 查询的单元测试。该查询涉及一个嵌套集,当我从 3 到 4 级分层类别时发生故障。执行时间方面的变化非常小。我正在使用的功能在 10 级时没有问题。但是,在 PhpUnit 中,当我运行 4 个或更多级别的测试时——我遇到了一个致命错误。
*总而言之,一个可能比平时多花一秒时间的查询或一个标签位更多的资源让我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 致命错误问题。会不会有关系??
我已经列出了一些古怪的方法(如下)来绕过我的问题,但我仍然想知道为什么这样一个基本测试似乎会导致这个问题。
- 运行 PhpUnit 并将其
processIsolation
设置为“true”。 - 不要
static::createClient();
在 setUpBeforeClass() 方法中访问
我有一个受人尊敬的#symfony (Stof) 成员建议我似乎不正确地将@logger 投入服务.. 但我已经确认这似乎不是通过使用记录器服务我的任何服务。
也许这个问题与超时有关?(错误提到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);}