代码之家  ›  专栏  ›  技术社区  ›  Alex Feinman

JUnit:暂停以供用户输入

  •  3
  • Alex Feinman  · 技术社区  · 16 年前

    我在学朱尼特。由于我的应用程序包含图形输出,我希望能够通过肉眼观察输出,并根据我看到的内容手动通过或不通过测试。它应该等我一段时间,然后如果超时就失败了。

    是否有一种方法可以在JUnit(或其扩展名)内执行此操作,或者我应该抛出一个对话框并在输出上断言为true?这似乎是现有解决方案的常见问题。

    编辑 如果我不应该用junit来做这个,我应该用什么?我希望每隔一段时间手动验证一次构建,并自动进行单元测试,如果这两个测试框架能够共存,那就太好了。

    5 回复  |  直到 16 年前
        1
  •  6
  •   Björn Pollex    16 年前

    手动接受/拒绝测试会破坏使用自动测试框架的目的。朱尼特不是为这种东西做的。除非您找到一种方法来创建和注入表示输出设备的对象的模型,否则您应该考虑其他选择(不知道有什么不好意思)。

    我曾经写过一个视频解码组件的自动测试。我使用其他解码器作为引用将解码后的数据转储到一个文件中,然后将解码器的输出与使用 PSNR 每对图像。这不是100%独立的(需要外部文件作为资源),但至少是自动化的,对我来说工作得很好。

        2
  •  3
  •   Yishai    16 年前

    虽然你可以编写代码,但这不是JUnit的目的。它是关于自动化测试,而不是指导性的手动测试。一般来说,“它看起来正确吗”测试被认为是一个集成测试,因为它是一个很难正确地自动化的东西,并且不会因为一些细微的变化而一直中断。

    看一看 Abbot 为您提供一种更强大的方法来测试您的GUI。

        3
  •  1
  •   Glen    16 年前

    单元测试不需要人工干预。如果你需要用户采取行动,那么我认为你做的不对。

    如果您需要一个人来验证事情,那么不要在单元测试中这样做。只是让它成为您的测试部门在构建QA’ing时执行的必需步骤。(这仍然是你的质量保证部门的工作,只有你自己。)

        4
  •  0
  •   reccles    16 年前

    如果使用MVC或任何实用方法(即使用Swing,通常使用颜色映射方法),我建议对模型使用单元测试。如果您对模型行为之类的东西有一套很好的单元测试,那么如果您有一个UI bug,它将有助于缩小搜索范围。

    基于视觉的单元测试是非常困难的,在我工作的一家公司,他们曾尝试过这些视觉测试,但是视频卡的细微差别可能会导致测试失败。最后,这是需要一个好的Q/A团队的地方。

        5
  •  0
  •   deterb    16 年前

    看一看 FEST-Swing . 它提供了一种自动测试GUI的简单方法。

    您要做的另一件事是尽可能地将完成大部分工作的代码与GUI代码分开。然后,您可以在这个工作代码上编写单元测试,而不必处理用户界面。您还将发现您将更频繁地运行这些测试,因为它们可以快速运行。