1

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

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

这通常发生在 WebTestCases 上。

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

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

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

最奇怪的是,重新运行后,一些错误消失了,最后全部消失。这是否涉及一些缓存?

我将不胜感激,因为除了网站上的 API 之外,网络中关于 SimpleTest 的文档/博客条目/论坛帖子实际上并不多。

4

2 回答 2

0

可能是这样的:

  • 缓存——你是否在链中的某个地方缓存了不好的结果?
  • 误解 - 你确定你在测试正确的东西吗?
  • 错误数据 - 如果您在数据库上进行测试,并且故障损坏了数据库中的数据,您可能会看到您提到的结果。
于 2010-12-27T15:25:01.063 回答
0

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

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

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

于 2011-09-21T12:03:06.020 回答