1、非继承性的扩展
2、扩展中的问题
1)脚本的设计
扩展脚本包括:ext-input、ext-output、ext-assert三个固定部分;
中间层脚本执行扩展脚本的三个固定部分;
扩展脚本的三个固定函数中,将调用中间层脚本提供的函数。
2)中间层脚本提供的接口
a)ext-input:扩展参数类型,扩展参数值编辑器的配置
add-input-type [condition input-type]
set-input-value-editor [condition editor-type init-value open-detail detail-title]
b)ext-output:扩展输出值和期望值编辑器
set-output-value-editor [condition editor-type init-value open-detail detail-title]
set-expect-value-editor [condition editor-type init-value open-detail detail-title]
c)ext-assert:扩展新断言的匹配,新断言模板
def-assert-match [output-type output-value test-type expect-type expect-value]
def-assert-info [utplsql-assert msg-in]
prepare-data []
execute-proc []
execute-assert []
restore-data []
add-assert-type [assert-name assert-info assert-match]
d)存储过程信息
e)存储过程的参数列表和引用表列表
f)ut文件的handler
g)案例的输入信息列表
h)案例的输出信息列表
3)问题
a)编辑器类型和初始值应该在哪里设置?
这个应该是公用的,所以不需要在每个断言里扩展,应该放在ext-output里
b)接口层次不一致问题
案例配置文件包含存储过程、输入/输出列表信息,存储过程包括其参数和引用表信息。为了兼顾工具使用的方便和扩展的能力,将同时提供不同层次的接口。
c)中间层提供的Java数据结构的时效性问题
不论是存储过程,还是案例配置文件,都不是某个一成不变的对象。因此,脚本中涉及到的数据结构均表示“当前正处理状态的数据结构”。
d) 断言模板在脚本和Java中的实现
如果Velocity模板中所需的数据可以直接在Clojure脚本中指定,那就没有必要在Java端判断是哪一种断言类型了。
e)扩展脚本中配置的数据结构如何添加到Java中?
在中间层脚本中添加,然后一次性导入Java中
每一条数据,在中间层脚本中调用Java的添加接口,一条一条添加
阅读(264) | 评论(0) | 转发(0) |