【问题标题】:SimpleTest WebTestCases affecting each other, not deterministic outputSimpleTest WebTestCases 相互影响,而非确定性输出
【发布时间】:2010-12-27 14:54:39
【问题描述】:

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

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

这通常发生在 WebTestCases 上。

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

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

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

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

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

【问题讨论】:

    标签: php unit-testing simpletest webtest


    【解决方案1】:

    可能是这样的:

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

    【讨论】:

    • 没有,但感谢您的建议。我已经发布了我发现的编辑。
    • 我明白了...这是我不喜欢使用测试套件的众多原因之一。
    【解决方案2】:

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

    呵呵,我查得很透彻,看来是SimpleTest库有bug。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      相关资源
      最近更新 更多