logo smartbear TestComplete 系列教程 我也要发布文档

自动化测试平台TestComplete使用教程:如何在自动化测试中使用Java类


TestComplete是一款具有人工智能的自动UI测试工具,利用自动化测试工具和人工智能支持的混合对象识别引擎,轻松检测和测试每个桌面,Web和移动应用程序。使用TestComplete,可以提高测试覆盖率并帮助提供经过实战考验的高质量软件。本文介绍了如何在自动化测试中使用Java类,本文中的信息仅适用于桌面应用程序。您可以从脚本中调用驻留在任何Java类中的例程。

点击下载TestComplete正式版


要求

  • TestComplete Desktop模块的许可证。
  • 在TestComplete中启用的Java类支持插件。该插件已安装并自动启用。

要检查插件是否可用,请选择File | 从TestComplete主菜单安装扩展,然后在随后的对话框中搜索插件。如果该插件不存在,请重新安装TestComplete。

通过JavaClasses对象调用Java例程

您可以使用该JavaClasses对象访问Java类及其方法和属性。设置如下:

1、指定Java虚拟机的模块。

为了使脚本引擎能够调用Java类的函数,您应该指定将用于承载这些类的Java虚拟机模块。为此,请使用“Java Bridge选项”对话框。要调用该对话框,请选择Tools | Options。从主菜单中选择选项,然后选择引擎 | 显示在结果“选项”对话框左侧的树中的Java Bridge。该对话框包括Java虚拟机模块位置选项,该选项使您可以指定Java虚拟机模块所需文件的路径。

自动化测试平台TestComplete使用教程:如何在自动化测试中使用Java类

2、使该类可用于脚本引擎。

为此,请将所需的类添加到项目的Java Bridge设置组的列表中。该组包含Java类列表,这些Java类的功能可通过JavaClasses对象和这些类的路径供脚本使用:

  • 选择工具| 从TestComplete主菜单中选择“当前项目属性”。
  • 选择“Java Bridge”类别。
  • 自动化测试平台TestComplete使用教程:如何在自动化测试中使用Java类
  • 要将新的类名称添加到Java类列表,请单击列表右侧的“添加”按钮,然后指定所需的类名称。使用完整的类名,包括程序包名。
  • 要指定指定类的路径,请单击“类路径”列表右侧的“添加目录”或“添加JAR文件”按钮,然后从随后的对话框中选择所需的文件夹或JAR文件。“类路径”列表包含目录和JAR文件。Java类在上面的Java类列表中指定。如果要将新的Java类添加到项目设置中,请单击Java类列表右侧的“添加”,指定的类将自动添加到该列表中。
  • (可选)要修改或重建添加到TestComplete项目设置中的JAR文件,请单击“Java类”列表右侧的“卸载类”。此按钮将清除Java类列表。事实是,TestComplete会阻止对Java Bridge项目设置中指定的JAR文件的访问,直到关闭包含相应项目的项目套件为止。因此,如果您在TestComplete中打开相应的项目时尝试删除或重建此文件,您将得到“访问被拒绝”提示。要访问指定的JAR文件,可以单击“卸载类”或关闭项目套件。

添加到Java Bridge选项中的类在脚本中可用作JavaClasses对象的子对象。特定类中定义的类型又是类节点的子对象。与类型相对应的对象提供对在此类型中定义的子类型,静态成员和构造函数的访问。所有可用的类、类型和类型成员都显示在“代码完成”窗口中:

自动化测试平台TestComplete使用教程:如何在自动化测试中使用Java类

要从脚本中调用特定方法,请使用以下语法:

JavaClasses.package.class.subclass.method(parameters)

作为参数传递的简单数据类型(例如字符串、整数、布尔值)将自动转换为适当的Java类的实例。仅当对象类型的参数是java.lang.Object的后代时才可以将其传递给Java Bridge。否则,将发生类型不匹配错误。

如您所见,包名和类名(以及子类名)必须由点分隔。另外,请注意,包名称中使用的点必须用下划线字符替换。

上面的语法使您只能调用Java类的静态成员。为了在脚本中使用非静态方法和属性,您应该首先通过调用类构造函数或创建新类实例的静态成员来创建所需类的实例。

注意:通常,Java构造函数的名称与其所属类的名称相同。一个类可以具有任意数量的构造函数,并且它们的名称相同。为了避免命名冲突,TestComplete将这些方法的名称更改为newInstance。因此,类构造函数将具有以下名称:newInstance, newInstance_2, newInstance_3,等等。

您可以以与其他对象相同的方式处理Java类的方法和属性返回的对象。某些值类型实例(例如数字和布尔值)是OLE兼容的,可以直接在脚本中使用。为了使字符串、小数、日期时间对象、枚举值和数组OLE-兼容,TestComplete增加了一个特殊的OleValue属性给他们。要使用结构和引用类型(字符串和数组除外),请使用它们的内部属性和成员。

通过JavaRuntime对象调用Java例程

对应于Java应用程序的所有进程对象都具有JavaRuntime方法,该方法提供对Windows进程中存在的Java虚拟机的访问。JavaRuntime方法返回的对象是所需Java虚拟机的java.lang.Runtime类的实例。该对象包含与java.lang.Runtime相同的属性和方法,以及TestComplete提供的特定属性。对象的JavaClasses属性提供对Java应用程序中定义的包和类的访问。

JavaRuntime.JavaClasses属性与JavaClasses对象相似,并且用于通过调用类成员JavaRuntime的语法类与使用JavaClasses对象时使用的语法相似:

Sys.Process("MyJavaApp").JavaRuntime.JavaClasses.package.class.subclass.method(parameters)

同样,要调用非静态方法或属性,您应该首先使用类构造函数或特殊的静态成员创建类实例。

JavaRuntime.JavaClasses与JavaClasses对象相比,该属性的优点在于,它使您可以创建应用程序类的实例,而不必将这些类添加到项目的Java Bridge选项中。

处理Java应用程序中发生的异常

TestComplete允许捕获和处理Java应用程序代码中发生的异常。您可以使用标准脚本语句来捕获这些异常,例如try…catch和其他。

TestComplete自动捕获在测试Java应用程序时发生的异常,并以以下格式返回其描述:

Exception Type: Exception Cause

例如,当被测Java应用程序检测到零-时,将发生以下异常java.lang.ArithmeticException: / by zero。

局限性

如果使用-verbose或-verbose:class命令行参数启动了测试的应用程序,则TestComplete无法访问Java对象的内部方法和属性。因此,如果您尝试访问Java对象的JavaVMCount或JavaVMVersion属性,并且使用这些命令行参数之一启动了经过测试的应用程序,则会发生错误。

本教程人内容就是这样了,希望对您有所帮助~您可以下载TestComplete试用版尝试一下,可以试一下文章使用的方法哦~

相关内容推荐:

TestComplete 使用教程>>>


想要购买TestComplete正版授权,或了解更多产品信息请点击【咨询在线客服】