WMQTest 接口

IBM® MQ Explorer 编写的测试必须属于扩展所提供 WMQTest 类的 Java 类。 本主题说明所提供方法的接口和操作。

测试属性

通过使用属性集合,在插件清单文件 (plugin.xml) 中定义测试。 下表列出了测试的属性。

属性 描述
标识 为测试提供唯一标识的字符串。
名称 测试的有意义的名称。
class 包含测试源代码的 Java 类的名称。
testset 用于定义要在其中显示测试的组的字符串; 例如,wmq,显示 队列管理器测试 类别中的测试。
testsubset 用于定义要在其中显示测试的子组的字符串; 例如,queues,在 队列 类别中显示测试。
description 描述测试所执行操作的简短描述。
furtherinfo HTML 或 XHTML 文档的位置,该文档包含关于测试的更多信息。 当您在 "运行测试" 对话框中双击测试或在 "测试结果" 视图中双击测试结果时,将在 IBM MQ Explorer 中显示此文档。

在 plugin.xml 文件中指定这些属性的值以定义测试。 也可以使用下表中列出的 WMQTest 方法以程序方式访问这些属性。

方法 描述
getTestID() 返回测试标识。
getTestName() 返回测试的名称。
getDescription() 返回测试的描述。
getTestSet() 返回为了成为此测试的父代而创建的测试集合对象的句柄。
getFurtherInfoPath() 返回 XHTML 或 HTML 文档的位置,该文档包含关于测试的更多信息。

创建测试

IBM MQ Explorer“测试”引擎使用提供的构造函数 WMQTest() 来实例化测试对象。 不需要生成此构造函数的子类。

测试结构

WMQTest 方法 runTest 定义测试的主体,并可调用此方法以启动测试运行。

runTest 方法的结束并不暗示测试结束;您必须使用 testComplete 方法显式指定测试结束。 您可以实现测试,以便它们以异步方式获取对象数据。

runTest 方法提交请求以获取有关对象的数据,并且测试将从接收应答的侦听器方法开始运行。 这使测试能够等待数据,而无需实现线程等待; 这在 样本 3中进行了演示。

如果测试过程需要手动等待(休眠),那么可以将对象监视器用于测试对象以使用 Java waitnotify 方法。 实现测试引擎的线程技术时未使用个别测试对象的对象监视器。

运行测试

IBM MQ Explorer“测试”引擎调用 runTest(WMQTestEngine, IProgressMonitor,contextObjects, treeNode) 以启动测试运行。 测试的主体必须在此处。

WMQTestEngine
WMQTestEngine 参数向正在运行测试的测试引擎提供一个句柄。

提供此项以在使用测试引擎的 returnResult(WMQTestResult[], WMQTest) 方法运行测试时允许测试返回结果。

此方法的第一个参数 (WMQTestResult[]) 包含要返回的结果,而第二个参数 (WMQTest) 必须是“this”,从而使测试引擎了解结果来自何处。 使用 WMQTestEngine 参数以返回中间结果是可选的 - 或者,可以在测试完成时返回测试结果(请参阅完成测试)。

IProgressMonitor
IProgressMonitor 参数向用于当前测试运行的 GUI 反馈监视器提供一个句柄。 此参数允许您的测试不仅提供关于当前正在运行的任务和子任务的文本反馈,而且还提供表示当前完成情况的进度条。

runTest 的缺省实现高速缓存进度监视器的句柄,因此如果已使用此项,那么也可以使用 WMQTest 方法 getGUIMonitor() 访问进度监视器的句柄。

进度监视器是核心 Eclipse 资源。 请参阅 Web 上的 Eclipse API 文档 ,以获取有关使用该文档的进一步建议。

contextObjects
contextObjects 参数提供一个 MQExtObject 数组。 此参数提供要运行的测试的上下文,以便在用户打开“运行测试”对话框时预先选中了相关复选框。
treeNode
treeNode 参数记录单击了导航器视图中的哪个文件夹或对象以运行缺省测试或打开“运行测试”对话框。

用户首选项

测试必须符合使用“Eclipse 首选项”对话框提供的用户首选项。 请使用以下方法来访问首选项:

  • PreferenceStoreManager.getIncludeHiddenQmgrsPreference() 返回 true(如果在测试中包含已在 IBM MQ Explorer 中隐藏的队列管理器)或 false(如果必须排除)。
  • PreferenceStoreManager.getIncludeSysObjsPreference() 返回 true(如果系统对象(名称以 SYSTEM 开头的对象。) 必须包含在测试中)或 false(如果必须排除)。

完成测试

通过调用 testComplete(WMQTestResult[]),并向其传递测试结果对象数组,完成测试。 请参阅 创建测试结果 ,以获取有关测试结果对象的指导信息。

您可以在完成时使用此方法返回结果,或者作为测试运行期间返回测试结果的替代方法 (如 运行测试中所述)。 然而,返回了两次的任何结果都将显示两次。

即使测试使用 WMQTestEngine 方法 returnResult 以返回其所有结果,仍然必须在完成时调用 testComplete。 要完成测试处理,必须执行此调用。 如果没有要返回的新结果,那么您可以在 testComplete 方法中提供 WMQTestResult 对象的空数组。

有关更多信息,请参阅 测试结构

创建测试结果

作为 WMQTestResult 对象实现测试结果。 请使用以下方法创建结果:

WMQTestResult(int severity , String description , String qmgrname , String objectType)

其中:

  • severity 是一个整数,用于标识问题的严重性。 请使用以下严重性级别之一:IMarker.SEVERITY_ERRORIMarker.SEVERITY_WARNINGIMarker.SEVERITY_INFO
  • description 是字符串,用于解释测试所发现的问题,将在“问题”视图中显示。
  • qmgrname 是找到问题的队列管理器的名称。
  • objectType 是字符串,其提供可找到问题的对象类,例如,“Queues”或“Channels”。

有关在创建测试结果对象时如何处理该对象的更多信息,请参阅 完成测试

处理取消

您可以取消正在运行的测试。 使用方法 isCancelled() 以检查测试是否必须停止。

好的测试必须定期检查它是否已被取消,以避免不必要地耽误用户的时间。

如果您尝试取消某个测试,但该测试在一个较长的时间段内未能响应,那么测试引擎通过结束正在运行该测试的线程来强制该测试停止。 请不要依赖此方法,最好是测试能够及时响应,以使测试能够清除其已使用的任何资源并返回迄今为止已生成的任何测试结果。

测试文档

您可以提供其他文档来说明测试返回的结果,并提供关于解决问题所必须执行的操作的指导。

请以 HTML 格式在提供测试的插件的 plugin.xml 文件中标识的位置提供文档。 有关在 XML 中定义测试的详细信息,请参阅 创建新测试

文档 HTML 文件的位置可以为以下几种:

  • 内部 - 存储在提供测试的插件项目本身中。 必须在与 plugin.xml 文件本身对应的 XML 文件中定义位置。 例如,doc/TestDoc.html
  • 外部 - 存储在 Web 服务器上,从而允许将文档与测试本身分开保存。 必须将位置定义为以“http://”开头的完整 URL。