【问题标题】:Unit testing issues with Javax Swing GUI application - suitable JDK 7 option?Javax Swing GUI 应用程序的单元测试问题 - 合适的 JDK 7 选项?
【发布时间】:2014-01-09 19:50:22
【问题描述】:

我需要测试一个使用 Swing GUI 界面的应用程序。我有一个客户端/服务器设计,想要模拟客户端输入(来自客户端的界面)并检索服务器响应。

到目前为止,我已经研究了用于 JDK 7 的 jfcUnit 和 UISpec4J,并在 NetBeans 下使用。尝试使用 jfcUnit(使用 NamedComponentFinder)从窗口实例中查找命名组件没有返回任何结果,示例来自登录屏幕示例下的 here。我假设名称是它在类中的字符串变量名。

我用于搜索给出空列表结果的客户端“连接”按钮的测试方法如下,其中 gui 是客户端 gui 类(遵循上面登录示例的其余部分):

 @Test
    public void testConnectVisible () {
        NamedComponentFinder finder = new NamedComponentFinder(JComponent.class, "connectBtn" );
        List allItems = finder.findAll(gui);
        System.out.println(allItems.toString());
    }

另一个是 UISpec4J,虽然我找不到与 JDK 7 兼容的 .jar。它的文档更完整,会更合适。

有谁知道 JDK 7 下合适的 GUI 测试框架,或者 JDK 7 的 UISpec4J/jfcUnit 的工作示例?我需要某种方式在客户端模拟基于事件的触发。

编辑我还想模拟多个客户端,这需要一个在一个测试实例中支持多个客户端窗口的测试框架。

非常感谢:)

【问题讨论】:

    标签: java swing user-interface junit uispec4j


    【解决方案1】:

    一般来说,最好不要在 GUI 中进行太多测试。您的 GUI 代码中应该完全没有业务逻辑。您的所有 GUI 代码都应该只调用业务层中的代码。

    业务层中的代码很容易使用正常的单元测试进行测试。这将使您的 GUI 测试数量尽可能少。

    说了这么多,多年前我使用了一个名为abbot 的框架,这听起来正是您所需要的。我刚刚查看了他们的网站,它说它应该适用于 Java 7 并针对 Java 6 进行了测试。

    【讨论】:

    • 感谢您的回复。就目前而言,我的客户端代码是这样组织的,以便所有 GUI 外观逻辑(由 NetBeans 生成)与在操作事件期间调用的方法是分开的。你是这个意思吗?我想到的一种测试方法是为必要的接口组件包含访问器和修改器方法,这样我就可以从 Junit 测试类中设置文本字段和以编程方式单击按钮等。这看起来合适吗?我认为使用像 abbot 这样的东西可能会让我的代码更简洁。
    猜你喜欢
    • 2016-01-18
    • 2017-03-11
    • 2011-04-23
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多