...
Table of Contents | ||
---|---|---|
|
Info |
---|
Javadocs 在哪里?可以通过选择 Parasoft> Help,然后打开 Parasoft SOAtest Extensibility API 书访问监视器工具 API 的 Javadocs。与事件监视工具直接相关的资源有 |
可用模式
可扩展性 API 允许使用以下三种模式之一捕获事件:
Anchor | ||||
---|---|---|---|---|
|
当试图监视系统中的事件与测试执行不同步时,此模式非常有用。例如,你可能对从日志框架中提取数据感兴趣,该框架以指定的时间间隔记录事件,因此你希望以相同的时间间隔在 SOAtest 中捕获已记录的事件,以确保实际检索到这些事件。
...
- 如果事件监视器执行测试套件的一部分与其他各种测试,定期用户代码执行就会停止最后一个测试在测试套件(或者数据源中的最后一行,前提为:测试套件测试是遍历一个数据源)完成执行。
- 已达到最大监视执行持续时间(该值在 Options 选项卡下配置)。
Anchor | ||||
---|---|---|---|---|
|
当试图监视系统中的事件通常与测试套件的测试执行事件同步时,此模式非常有用。例如,在系统中发生事件之后,系统的日志框架会立即被触发,并且这些事件可供你获取。
...
- 测试套件中的最后一个测试(如果测试套件测试在数据源上迭代,则是数据源中的最后一行)已经执行完毕。
- 已达到最大监视执行持续时间(该值在 Options 选项卡下配置)。
Anchor | ||||
---|---|---|---|---|
|
这可能是最常见的模式,Parasoft 建议尽可能使用它。当试图监视的框架允许订阅者在事件发生时立即被触发时,这种模式非常有用。换句话说,它可以执行“回调”功能。
例如,JMS 发布/订阅消息模式就是这种模式的一个例子,它用于驱动 Sonic、TIBCO 和事件监控工具中支持的其他内置平台。在我们的杂志阅读器示例中,这类似于订阅出版物,因此最新一期的杂志一出版就会被交付给读者。
使用“在指定的时间间隔进行轮询”和“在每次测试执行之后进行轮询”模式
当使用这两种模式时,你在 User Code 部分中选择的方法将按照各自的模式执行。你可以将方法名称与你希望的任何名称组合在一起(请确保 Method 菜单中选中了该名称)。
...
- url (String): 事件监视器连接部分的 URL 字段中提供的值。
- usernameString): 事件监视器连接部分的 username 字段中提供的值。
- passwordString): 事件监视器连接部分的 password 字段中提供的值。
- connection(Object): 可以选择提供此对象,以便在事件监视器的多个脚本执行过程中维护和重用相同的连接。有关更多详情,请查阅 可扩展性 API 模式 Maintaining Connections 。
- context (com.parasoft.api.Context): 标准的 SOAtest 脚本上下文,它允许访问变量、数据源值和设置/获取对象,以便在测试执行期间共享。
示例(Jython)
Code Block |
---|
from com.parasoft.api import * def getEvent(url, username, password, connection, context): return Event("Hello!") |
getEvent() 方法下的代码基本上处理从希望监视的系统中检索事件,并返回 com.parasoft.api.IEvent 的实现。在本例中,我们返回 com.parasoft.api.Event,它是该接口的适配器实现,并接受一个简单的字符串对象“Hello!”
Anchor | ||||
---|---|---|---|---|
|
在实践中,能够创建到你希望监控并重用该连接来检索事件的远程系统的连接(而不是在每次用户代码调用时创建新的连接),这一点常常很有用。因此,除了具有如上所述的检索 Ievent 对象的方法外,你还可以选择添加两个额外的可选方法;
...
事件监视器寻找这两个可选方法的存在。如果要添加它们,请确保使用正确的方法签名。 createConnection() 在事件监视器执行开始时调用一次,而 destroyConnection 在执行结束时调用一次。事件检索方法(例如上面的 getEvent())在按照所选模式运行事件监视器测试期间可能被调用多次。使用 createConnection 方法创建的连接对象被传递给事件检索方法,因此可以使用该连接返回事件。
例如
Code Block |
---|
from com.parasoft.api import * def getEvent(url, username, password, connection, context): return connection.getEvent() |
使用“订阅事件生成器”模式
使用此模式,事件监视器期望一个方法(具有任意名称,只要在 Method 下拉菜单中选择该名称),并且具有以下签名:
...
事件监视器开始时将自动调用 start 方法,事件监视器执行结束时将自动调用 stop 方法。在此模式下的假设是,EventSubscriber 实现将负责连接到目标系统并在 start() 中订阅其事件生成框架,然后在 stop() 中取消订阅并断开连接。下面提供了订阅 TIBCO EMS 消息监视主题的示例实现。这实际上反映了事件监视器内置的 TIBCO EMS 平台所使用的模式。
例如
在与 SOAtest 一起发布的 examples 脚本目录下也可以找到这个例子。它作为 Eclipse 项目包含在 zip 归档文件中,可以导入到 Eclipse 工作区。它需要将 TIBCO EMS 和 com.parasoft.api.jar 中的 tibjms.jar 添加到类路径中,以便构建和运行。 com.parasoft.api.jar 可在 <SOAtest Installation Directory>\plugins\com.parasoft.xtest.libs.web_<SOAtest version>\root
上获得。
...