...
- execute()
- acceptsInput(IToolInput, ICustomToolConfiguration)
- isValidConfig(ICustomToolConfiguration)
你将使用 您将使用 execute() 方法实现工具的执行逻辑,该方法为你提供了一个 方法实现工具的执行逻辑,该方法为您提供了一个 IToolInput 和 IToolContext。IToolInput 包含发送到工具的输入消息,例如 XML 或来自请求或响应的流量。上下文提供对 UI 配置和输出管理器的访问。返回 true 表示工具执行成功,而 false 表示工具执行失败。
输出管理器可用于将 IToolInput 发送到连接到自定义工具实例的工具。你可以构建自己的 发送到连接到自定义工具实例的工具。您可以构建自己的 IToolInput 实现,也可以使用 Parasoft 提供的默认实现。
例如,假设你在 例如,假设您在 parasot -extension.xml 中定义了两个输出:
Code Block |
---|
<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) 按钮,并将工具添加到所选输出中。下面是一个构造输入并将其传递给链式输出工具的例子:
Code Block |
---|
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 异常;这将中止该工具的执行并导致其失败,此外还会中止场景执行(如果场景被设置为在出现致命错误时中止)。以任何一种方式报告的错误都将报告给质量任务视图。
...
- acceptsInput(IToolInput, ICustomToolConfiguration): 返回一个布尔值。你将使用此方法来确定你的工具是否接受给定的输入。如果返回 返回一个布尔值。您将使用此方法来确定您的工具是否接受给定的输入。如果返回 true,则调用 execute();否则将不会调用 execute()。
- isValidConfig(ICustomToolConfiguration): 返回一个布尔值。你可以使用此方法来确定 返回一个布尔值。您可以使用此方法来确定 UI 配置是否在运行时之前正确设置。如果该方法返回 false,则该工具将无法运行。
在处理 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。
...
- 将提供给扩展 GUI 的值保存为名称-值字符串映射。作为一种结果,重新整理 parasoft-extension.xml 中表单元素的字段将不会影响用户值是否已保存;然后,改变 id 将会影响这一点。id 用于保存或加载值,因此它们必须是唯一的。如果更改它们,则先前保存的配置将不会加载以前的值,并且将变为空。然而,你可以使用修订更新器将用老 用于保存或加载值,因此它们必须是唯一的。如果更改它们,则先前保存的配置将不会加载以前的值,并且将变为空。然而,您可以使用修订更新器将用老 id 保存的老设置迁徙到新 保存的老设置迁移到新 id 集。
- 字段可以指定
type
属性。这可以设置为:string
: 一个普通字段。xpath
: 提供 XPath Chooser 功能。password
: 在键入时隐藏值,保存时加密值。
- 仅支持自定义表单 GUI 中带字符串值的 GUI 字段。如果扩展要求 integer 或其他类型,则你可以将字符串内容转换为扩展实现类中的所需类型。或其他类型,则您可以将字符串内容转换为扩展实现类中的所需类型。
如果希望 GUI 字段用作密码字段(输入屏蔽和安全保存特定密码),请给该字段元素一个
type
属性,并将其设置为password
。例如,下面将pwd
字段设置为密码模式:Code Block <form xmlns="urn:com/parasoft/extensibility-framework/gui"> <section label="Main Settings"> <field id="usr" label="Username"/> <field id="pwd" label="Password" type="password"/> </section> </form>
如果希望 GUI 字段实现为 Xpath 选择器,请该字段设置一个设置为 xpath 的
type
元素。例如,下面将element
字段设置为 XPath 选择器:Code Block <form xmlns="urn:com/parasoft/extensibility-framework/gui"> <section label="Main Settings"> <field id="element" label="Select an element" type="xpath"/> </section> </form>
- 如果希望在调用已定义的 execute() 方法之前将非 XML 输入转换为 XML,请启用 parasoft-extension.xml 中的
supportXmlConversion
选项。工具用户将能够在工具的配置面板中选择所需的消息格式。此外,如果实现了 XPath 选择器(见上面),则它的树视图将以适合所选消息类型的格式显示消息。(注意,消息格式是在工具配置面板的消息格式部分设置的)。
...
- 表格或列表可以在字符串字段中实现为逗号分隔的值。
可以使用
${var_name}
语法引用扩展 GUI 字段中的数据源、数据库值、环境变量和测试或响应程序套件变量。批准的 "参数化" 和 “脚本化" GUI 控件还可用来参数化字段。
...