使用PHPUnit的Selenium RC测试+单元测试会引发Seg Fault

时间:2009-07-28 22:20:56

标签: php testing selenium phpunit

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

我正在使用代码覆盖进行单元测试,但不使用selenium测试(通过在我的selenium对象中保留$ coverageScriptUrl属性为空)。

我真的很喜欢这里的稻草,因为我从来没有必要诊断没有文件或行号的错误。我有什么地方可以查看更多信息吗?有人能指出我正确的方向吗? php错误日志为空。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

我和同事在工作中遇到了同样的麻烦:有一天,我们开始有一个段错误,显然没有理由,因为相同的代码在另一台机器上正常运行: - (

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

你可以尝试一些事情:

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

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

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

无论如何,祝你好运......

<(如果你发现造成问题的原因,我很感兴趣;-))

答案 1 :(得分:0)

PHP中的Segfaults肯定会很棘手。

作为一个疯狂的猜测,你在运行PHPUnit 3.4吗?几周前,当使用$this->selectWindow()调用和null参数时,看起来there's a bug报告了Selenium集成。

答案 2 :(得分:0)

如果xdebug导致段错误,您可以切换到使用完全不使用xdebug的测试覆盖率工具,只需使用标准的PHP服务器:

Semantic Designs PHP Test Coverage