本主题解释了如何使用自定义工具扩展 SOAtest 和 Virtualize。

本章包含:

关于自定义工具

 SOAtest 和 Virtualize 包括添加自定义工具的框架。自定义工具可配置来执行输入上的自定义执行。例如,自定义工具可以修改变量,或删除浏览器 cookie。

为自定义工具实现的接口

设置好自定义扩展的环境后,请实现以下接口(Extensibility API 文档中有作说明):

ICustomTool 实现

这是一个必需的类,将用于实现工具执行逻辑。该接口有三种实现方法: 

您将使用 execute() 方法实现工具的执行逻辑,该方法为您提供了一个 IToolInput 和 IToolContext。IToolInput 包含发送到工具的输入消息,例如 XML 或来自请求或响应的流量。上下文提供对 UI 配置和输出管理器的访问。返回 true 表示工具执行成功,而 false 表示工具执行失败。

输出管理器可用于将 IToolInput 发送到连接到自定义工具实例的工具。您可以构建自己的 IToolInput 实现,也可以使用 Parasoft 提供的默认实现。

例如,假设您在 parasot -extension.xml 中定义了两个输出:

<output key="output_1" name="traffic header"/> 
<output key="output_2" name="traffic body"/>

在 SOAtest 或 Virtualize 中,您可以选择自定义工具,单击 Add test or output (SOAtest) or Add responder or output (Virtualize) 按钮,并将工具添加到所选输出中。下面是一个构造输入并将其传递给链式输出工具的例子:

public boolean execute(IToolInput input, IToolContext context) throws CustomToolException
{
    String charset ="UTF-8";
    String mimeType ="text/plain";
    String header ="";
    String message ="";
    . . .
    DefaultTextInput headerOutput = new DefaultTextInput(header, charset, mimeType);
    context.getOutputManager().runOutput("output_1", headerOutput, context);
    . . .
   DefaultTextInput msgOutput = new DefaultTextInput(message, charaset, mimeType);
   context.getOutputManager().runOutput("output_2", msgOutput, context);
   . . .
   return true;
}


如果在工具执行过程中遇到错误,应该使用 IToolContext.report(String) 报告一个或多个错误。如果遇到阻止工具执行完成的致命错误,则应抛出 CustomToolException 异常;这将中止该工具的执行并导致其失败,此外还会中止场景执行(如果场景被设置为在出现致命错误时中止)。以任何一种方式报告的错误都将报告给质量任务视图。

要实现的其他方法:

在处理 IToolInput 时,需要检查传递给工具的特定类型的 IToolInput。在大多数情况下, SOAtest or Virtualize 将传递 IToolInput 子接口的实例。但是,在某些情况下,可能无法将输入转换为 IToolInput 更特定的子接口。在这些情况下,一个简单的 IToolInput 将传递给工具。IToolInput 没有方法,但是有一种可以访问正在使用的内部对象的方法。所有 Itoolinput 都是一个名为 com.parasoft.tool.IToolInputWrapper 内部接口的实例。您可以转换到该接口,然后调用 gettoolavailable() 方法来访问正在使用的内部对象。

当将输入传递到自定义工具的输出时,可能会发生类似的情况。您可能需要从内部 API 传递一个对象,而不是从 IToolInput 更具体的子接口的实例中传递。在这种情况下,您将返回内部接口 com.parasoft.tool.IToolInputWrapper 的一个实例,它返回 com.parasoft.tool.ToolUsable。

定义自定义工具的 parasoft-extension.xml

实现必要类后,如下定义 parasoft-extension.xml:

<?xml version="1.0" encoding="UTF-8"?>
<extension xmlns="urn:ocm/parasoft/extensibility-framework/v1/extension"
                    type="tool"
                    name='the name of your tool, appears in menus'
                    description='A more detailed description'>
<class>com.myCompany.MyTool</class> <!-- implements ICustomTool -->
<version id='your version ID' updaterClass="com.myCompany.myUpdater"/>
<tool xmlns="http://schemas.parasoft.com/extensibility-framework/v1/tool"
           icon="myIcon.gif"
           useInputTab="true"
           successIndicator="true"
           category="myCategory"
           supportXmlConversion="true"
           showInToolList="common"
           showInOutputList="common">
           <outputs>
                     <output key="key" name="output name"/>
                     ...
           </outputs>
           </tool>
<form xmlns="urn:com/parasoft/extensibility-framework/gui">
                    <section label="field group 1">
                              <field id="key 1" label="field 1"/>
                              <field id="key 2" label="field 2"/>
                              <field id="element" label="Select an element" type="xpath"/>
                    </section>
                    <section label="field group 2">
                              <field id="key 3" label="field 1"/>
                              <field id="usr" label="Username"/>
                              <field id="pwd" label="Password" type="password"/>
                              . . .
                    </section>
                    . . .
</form>
</extension>

<tool> Element

此元素对于此扩展类型是唯一的,并且对于要导入的自定义工具必须是有效且正确的。

属性:

<form> Element

此元素对于此扩展类型是唯一的,并且对于要导入的自定义工具必须是有效且正确的。定义自定义工具的 input 字段。

属性:

提示


验证新工具

验证是否已经创建新工具,并在其他 Parasoft 定义的工具中列出。