【问题标题】:GUI Unit Testing via Macro Recording通过宏录制进行 GUI 单元测试
【发布时间】:2013-07-05 06:42:02
【问题描述】:

我最近接到了为现有的独立 Java GUI 应用程序编写单元测试的任务。

到目前为止,我已经编写了一个应用程序,它允许通过记录鼠标和键盘输入(以及单个事件之间的时间)来创建宏并执行这些宏。这适用于检查应用程序是否存在严重错误,但目前无法检查底层 GUI 的数据。 如果我可以通过 JUnit(assertequals 等)检查数据,那就太好了。

我怎样才能做到这一点?这是一个反思的案例吗?

【问题讨论】:

    标签: java unit-testing junit


    【解决方案1】:

    除非编写框架是你任务的一部分,否则我建议避免重新发明轮子。

    有多种框架用于测试 swing UI,几乎所有框架都支持 junit。 看看fest-swing,例如,它允许您从 Junit 测试您的 UI 组件。它还允许您断言下划线 UI 的属性(因此断言某个表在单击按钮后应该有 5 行,或者特定小部件应该处于特定状态等)

    最好将它与您自己实现的模拟“后端”结合起来,或者使用模拟库来模拟您的服务器/业务逻辑 - 看看mockito

    【讨论】:

    • 谢谢 radai,我刚刚玩过 FEST 框架。我担心它无法处理我们的自定义 GUI 组件,但它就像一个魅力,正是我所需要的!我的解决方案实际上是在重新发明轮子 :)
    • @cutze - 很高兴我能帮上忙。如果有效,您介意将其标记为正确答案吗? ;-)
    【解决方案2】:

    我对程序设计持怀疑态度。表示层听起来像是有业务逻辑。这很糟糕。

    我建议重构代码,以免出现这种情况。每个 GUI 操作都应对应于对逻辑层的调用。逻辑层应该有单元测试,而不是表示层,除非表示很复杂。

    【讨论】:

    • 单元测试应用程序目前是独立的。它只是让我们能够记录我们的鼠标和键盘操作并重放它们。现有的主应用程序已经相当大,而且大部分 GUI 组件都是公司内部的,所以它们的功能也应该进行测试。
    • 然后为逻辑层编写单元测试。不要通过 GUI 测试逻辑层。它没有提供很好的覆盖范围或全面的值范围。即使 GUI 层绑定到逻辑层,也只需创建一个表单并以编程方式对其进行测试。我不会打扰宏。
    猜你喜欢
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    相关资源
    最近更新 更多