【问题标题】:JUnit tests in eclipse failing when run together一起运行时,Eclipse中的JUnit测试失败
【发布时间】:2011-05-16 06:02:06
【问题描述】:

我有一组使用 Eclipse 运行的 44 个 JUnit 测试(我从其他人那里得到这些测试 - 我是 JUnit 测试的新手)。当我一起运行它们时,其中 24 个失败了。但是,如果我随后单独运行失败的那些,其中一些确实会通过。测试确实需要一点时间——例如其中一个失败的测试大约需要一两分钟才能完成,而让所有测试在几秒钟内完成。

我通过右键单击它们所在的文件夹并选择“Run As -> JUnit Test”来启动多个测试。我正在使用 JUnit 3。我在启动它们时做错了什么/是否缺少某种选项?

【问题讨论】:

    标签: eclipse junit


    【解决方案1】:

    如果没有看到测试,很难确定,但在我看来,它们共享的某些状态或资源没有为下一次测试正确重置。

    【讨论】:

    • 在我的情况下,它是私有静态变量,它正在发生变化。每次测试后我都必须重置变量。使用@After注解标记清理方法。
    【解决方案2】:

    GaryF 的答案是一种可能性。另一个是测试有一个竞争条件:测试是否成功取决于事情发生的速度(这可能会因操作系统的变幻莫测而有所不同)。如果您分别运行失败的测试,它们是总是成功还是有时会失败。如果它们有时会失败,那么您可能会遇到竞争条件。

    【讨论】:

    • 我现在无法检查,因为代码在工作,但我尝试了 4 或 5 次,他们总是成功。我也没有在 JUnite 代码中看到任何东西向我暗示其中存在时间条件。
    • @pyvi 那么GaryF的场景和证据比较吻合。
    【解决方案3】:

    为了扩展 Gary 的答案,当右键单击并执行 Run As -> JUnit 时,您无法保证测试运行的顺序,这也可能有助于破坏共享资源。

    我将首先查看您的 setup() 和 teardown() 方法,以确保正确重置共享资源。此外,由于您继承了这些测试,您可能想要查看是否有任何测试相互依赖。虽然这是一种不好的做法并且应该改变,但您也许可以创建一个 test suite() 来确保它们运行的​​顺序(至少在您可以重构和解耦测试之前)。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 2011-12-05
    • 1970-01-01
    相关资源
    最近更新 更多