Symfony2 PHPUnit,测试时间稍长,与独白相关的致命错误

Symfony2 PHPUnit,测试时间稍长,与独白相关的致命错误,php,symfony,phpunit,monolog,Php,Symfony,Phpunit,Monolog,我已经将问题缩小到一个单元测试,它涉及一个非常干净的dbal查询。该查询涉及一个嵌套集,当我从3到4个层次分类级别进行查询时,就会出现故障。在执行时间方面几乎没有变化。。我使用的功能在10级时没有问题。然而,在PhpUnit中,当我以4个或更多级别运行测试时,我会得到一个致命错误 *总而言之,一个可能需要比平时多一秒钟的查询,或者需要多一点资源的查询在PHPUnit*中给我带来了一个php致命错误 错误如下所示: 致命错误:第92行调用/var/www/my-app/vendor/symfony

我已经将问题缩小到一个单元测试,它涉及一个非常干净的dbal查询。该查询涉及一个嵌套集,当我从3到4个层次分类级别进行查询时,就会出现故障。在执行时间方面几乎没有变化。。我使用的功能在10级时没有问题。然而,在PhpUnit中,当我以4个或更多级别运行测试时,我会得到一个致命错误

*总而言之,一个可能需要比平时多一秒钟的查询,或者需要多一点资源的查询在
PHPUnit
*
中给我带来了一个
php致命错误

错误如下所示:

致命错误:第92行调用/var/www/my-app/vendor/symfony/symfony/src/symfony/Component/HttpKernel/Debug/Stopwatch.php中未定义的方法monog\Formatter\LineFormatter::stopEvent()

有人在第92行也出现了phpUnit致命错误问题。有关系吗

我列出了一些绕过我的问题的奇怪方法(如下),但我仍然想知道为什么这样一个基本的测试似乎会导致这个问题

  • 运行PhpUnit时,将
    processIsolation
    设置为“true”
  • 不要访问
    static::createClient()
我有一位受人尊敬的#symfony(Stof)成员建议,我似乎不恰当地将@logger添加到服务中。。但我已经确认,这似乎不是我的任何服务中的记录器服务

也许这个问题与超时有关?(错误提到了
stopevent
stopwatch
)。或者这个错误可能与访问
$client=static::createClient()有关
setUpBeforeClass()
中。。然后在前面的测试中再次访问。。不管这让我很困惑,据我所知,我的Symfony2(2.1.1)安装中的其他一切都运行得非常好

*Stopwatch.php的第92行*

 /**
 * Stops an event.
 * @param string $name The event name
 * @return StopwatchEvent A StopwatchEvent instance
 */
public function stop($name)
{ return end($this->activeSections)->stopEvent($name);}

嗯。因此,您从
$this->activeSections
数组中获取最后一项,然后它们尝试对其运行
stopEvent()
方法。在这种情况下,
LineFormatter
类似乎没有可用的方法

我不熟悉Monolog,但简单地看一下他们最新的GitHUb repo,我可以发现它继承的LineFormatter或NormalizePerformatter类都没有这样的方法


似乎独白对Symfony不太好。如果不修改Monolog和/或Symfony Stopwatch类,您将无法使用Stopwatch来分析与Monolog相关的代码。

您能显示Stopwatch.php的第92行以及之前的几行吗?我在主要部分添加了第92行,并带有指向on github源代码的链接。。看起来它想表现得像个秒表。。。致命的错误是大树桩。似乎在整个过程中没有加载某些内容,因此出现了错误。。但是为什么修改一个非常简单的查询会影响加载的内容呢?编辑文件会使事情复杂化。我可以运行phpunit测试,并将
processIsolation
设置为“true”。。你能解释一下这个问题吗?如果不了解你正在运行的整个单元测试套件,很难说为什么进程隔离会导致不同的结果。也许你有一个测试中的项目没有在测试拆卸中清除,因此会污染在同一过程中运行的后续测试。迈克,很难说,我花了很长时间才弄清楚这个问题。。有时,隔离单线,进行大量调试。我的直觉是你涵盖了这个问题发生的两个主要原因#一路上有些东西被污染了#2-独白/Phpunit/Symfony玩得不好。