SimpleTest WebTestCases相互影响,而不是确定性输出

时间:2010-12-27 14:54:40

标签: php unit-testing simpletest webtest

我正在使用CodeIgniter开发一些项目,并在SimpleTest中编写单元测试和Web测试。我注意到我的测试不是确定性的,即它们及时产生不同的输出。我的意思是测试用例应该是严格确定的,不依赖于随机变量等。

测试看起来像是互相影响。很多时候,当一切顺利的时候,我已经说过100次通过测试,但是当我编写一个失败的新测试方法时,其他几个测试也会失败。但是经常在我失败的测试案例中纠正问题并且重新运行整个测试套件2-3次整个套件再次通过。

这通常发生在WebTestCases上。

你知道这可能是什么问题吗?

我不修改任何共享的类变量等。

我已经看了一下SimpleTest的代码(或多或少,快速分析整个流程很重要),看起来在启动不同测试之前重新创建了浏览器实例。

最奇怪的是,在重新运行之后,一些错误消失了,最后,所有错误都消失了。这有什么缓存吗?

我会很感激提示,因为除了网站上的API之外,网上没有太多关于SimpleTest的文档/博客文章/论坛帖子。

2 个答案:

答案 0 :(得分:0)

它可能是:

  • 缓存 - 你是否缓解了糟糕的结果 链中的某个地方?
  • 误解 - 你确定吗? 正在测试正确的东西?
  • 错误数据 - 如果您正在测试此问题 数据库的顶部,以及失败 损坏了数据库中的数据, 你可能会看到像你这样的结果 提。

答案 1 :(得分:0)

(编辑:将答案作为单独的帖子移动)

嗯,我做了相当彻底的调查,似乎SimpleTest库中存在一个错误。

他们使用fsockopen打开连接,然后通过fwrite发送请求,然后错误地从套接字获取响应。我的意思是:我们可以从套接字读取0个字节,但我们没有完成,因为我们错误地假设,导致服务器忙,并且稍后发送数据,而我们提前结束读取。这样,我们没有读取整个响应,我们只对部分响应进行测试,导致它失败。