2

所以我有一组单元/集成测试和一组 selenium rc 测试作为我的套件的一部分。当我使用 PHPUnit 一起运行它们时,我在运行的最后收到一条 Segmentation fault 错误消息,在正常操作期间,它开始生成日志文件。有趣的是,如果我只运行单元测试,或者只运行 selenium rc 测试,一切正常。我有理由确定这不是我的代码库的问题,因为我可以直观地看到我所有的测试都通过了。正如我所说,错误发生在结果生成阶段。

我将代码覆盖用于单元测试,但不用于 selenium 测试(通过在我的 selenium 对象中将 $coverageScriptUrl 属性留空)。

我真的在这里抓住了稻草,因为我从来没有诊断出没有文件或行号的错误。有什么地方我可以检查更多信息吗?有人可以指出我正确的方向吗?php 错误日志为空。

有任何想法吗?

4

3 回答 3

3

我在工作中和一位同事遇到了同样的麻烦:有一天,我们开始出现段错误,显然没有原因,因为相同的代码在另一台机器上运行良好:-(

我们最终删除了代码覆盖率(因为它对我们没有那么有用;反正太低了)

您可以尝试几件事:

  • 尝试使用最新版本的 Xdebug(有时,那些应该纠正这样的东西)
  • 尝试使用旧版本的 Xdebug(为什么不呢?)
  • 考虑在 PHPUnit 上将您的测试套件拆分为两个执行:
    • 具有代码覆盖率的一次执行,用于单元测试
    • 一次没有代码覆盖的执行(因为你无论如何都不使用它),用于功能测试

另一个可能是尝试使用 Xdebug 2.1 的 CVS 版本,而不是稳定的 2.0.x;但不确定这会有所帮助(例如,请参阅http://www.phpunit.de/ticket/513 )

在 Xdebug 的 Mantis BT 上有几个与段错误相关的错误报告;其中一些没有解决。
例如 :

不管怎样,祝你好运...

<(如果您发现导致问题的原因,我很感兴趣 ;-))

于 2009-07-29T04:23:10.417 回答
0

PHP 中的段错误肯定很棘手。

作为一个疯狂的猜测,你在运行 PHPUnit 3.4 吗?几周前,在使用调用和参数时,似乎有一个与 Selenium 集成有关的错误报告。$this->selectWindow()null

于 2009-07-28T22:48:40.803 回答
0

如果 xdebug 导致段错误,您可以切换到使用根本不使用 xdebug 的测试覆盖工具,只是一个标准的 PHP 服务器:

语义设计 PHP 测试覆盖率

于 2010-03-24T09:57:48.367 回答