【问题标题】:Testing java web start application using jemmy使用 jemmy 测试 java web start 应用程序
【发布时间】:2014-07-08 11:01:37
【问题描述】:

我需要使用 Jemmy 创建一些 gui 测试,但我不知道如何使用 javaws 应用程序启动它。 在 tutorials/examples/etc 中是这样的:

new ClassReference("org.netbeans.jemmy.explorer.GUIBrowser")
                                                        .startApplication();

此代码打开一个示例窗口,但我怎样才能使用 ClassReference 对象打开 *.jnlp 文件?或者 是另一种将 jemmy 与 java web start 应用程序“连接”的方式吗?

感谢您的提前。

【问题讨论】:

    标签: java java-web-start jemmy


    【解决方案1】:

    您可以通过准备包含 Jemmy 的特殊构建并从以 jnlp 模式运行的应用程序本身调用 Jemmy 来实现此目的。

    【讨论】:

    • 能否请您提供有关此解决方案的更多信息:“包含 Jemmy 的特殊构建” - 我需要在 AUT 中进行任何编码还是只需要添加 jemmy.jar 来构建路径; “从以 jnlp 模式运行的应用程序调用 Jemmy” - 这是什么意思,有代码示例吗?
    • @IvanGerasimenko,我的意思是将 jemmy.jar 与您的应用程序捆绑在一起。不仅在构建阶段,而且在部署阶段。这是克服网络启动的安全复杂性的最简单方法。之后,您可以从代码中以任何方式调用 Jemmy。
    • “之后你可以从你的代码中以任何你想要的方式调用 Jemmy”你的意思是从 Application Under Test 的代码中调用 Jemmy?
    【解决方案2】:

    解决办法是:

    1. 将构建文件放入 PC 上的任何文件夹中。
    2. 将此版本中的.jar 文件添加到您的测试项目中。
    3. 在文本编辑器中打开.jnlp文件并搜索主应用程序类
      application-desc main-class="[Main application class]"/>
    4. 从您的测试中调用它以启动应用程序
      new ClassReference("[Main application class]").startApplication();

    现在您可以从测试环境访问此 Java 应用程序的元素

    【讨论】:

      【解决方案3】:

      You can use Jemmy with JUnit in NetBeans IDE.

      对于 GUI 测试,我们使用 Jemmy,这是 NetBeans IDE 附带的一个库,对于测试 Swing 应用程序非常有用。

      利用 Jemmy 的 JUnit 测试,例如:

      @Test
      public void JunitTest() {
      JFrameOperator mainFrame = new JFrameOperator();
      JTextFieldOperator textField = new JTextFieldOperator(mainFrame, "textIn");
      int x = 10;
      assertEquals(x, textField.getLocationOnScreen().x);
      }
      

      添加@Test 注释并根据需要使用JUnit 的assertEquals()fail()


      另一种方法:

      您也可以使用 jnlp 来完成。已经推荐@Sergey Grinev

      A good example and running code is given in this link:

      快照:

      1. 点击webdriver中的jnlp文件链接,将jnlp文件保存到磁盘;
      2. 从 jnlp 运行 webstart 应用程序;
      3. 捕获打开的应用并将其用于测试。

      这个过程可以通过使用以下库来完成:

      • netx - 用于从 jnlp 运行 webstart 应用程序。
      • uispec4j - 用于拦截创建的 webstart 窗口和 操作窗口元素。

      您可能可以使用其他 AWT/Swing 测试工具执行相同的技巧,但是 uispec4j 允许拦截从 jnlp 执行的 webstart 应用程序,您不需要通过调用 main() 来运行应用程序,也不需要在您的测试代码仓库中包含您的 webstart 应用程序源代码。

      功劳归tporeba

      要了解更多关于 Jemmy 的信息,您可以访问此链接

      1. Jemmy Tutorial
      2. Jemmy Samples
      3. NetBeans Platform Test Infrastructure Tutorial

      【讨论】:

      • 谢谢,您对 Jemmy 与 web-start 应用程序的使用有何解释?是/否?为什么?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 1970-01-01
      • 2012-10-06
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多