utPLSQL用户指南一

utPLSQL单元测试框架由几个不同的元素组成:

  • 一组存储关于单元测试与测试套件的信息的表
  • 一组用于运行测试、构建测试包以及访问测试信息的包

用户指南描述了如何使用这些utPLSQL包。

1、utPLSQL包

utPLSQL包提供了以下功能:

  • 运行测试。utPLSQL.test以及utPLSQL.run。
  • 运行测试套件。utPLSQL.testsuite以及utPLSQL.runsuite。
  • 获取utPLSQL版本。utPLSQL.version。
  • 控制utPLSQL的跟踪机制。utPLSQL.trc、utPLSQL.notrc以及utPLSQL.tracing。
  • 在测试包中注册单元测试。utPLSQL.addtest。

1.1、运行测试或测试套件

utPLSQL既可以运行测试包中的所有单元测试,也可以运行测试套件中定义的多个测试包中的测试。在运行测试之前,必须构建测试包

使用utPLSQL.test过程运行单个包的测试:

 
 

参数定义如下表。

 package_in 被测试的包或者独立程序的名称。
 samepackage_in 如果单元测试程序与被测试代码位于相同的包中,设置为TRUE。默认为测试程序位于单独的包中。
 prefix_in 前缀,与package_in组成测试包的名称。如果没有指定值,使用最后一次指定的值或者默认值。
 recompile_in 如果不需要在运行测试之前自动重编译测试包,设置为FALSE。
 dir_in 包含测试包源代码的目录。如果不指定值(默认情况),并且没有关闭自动重编译,将会在utConfig.setdir指定的目录中查找测试包源代码。如果没有指定目录,使用最后一次指定的目录。
 suite_in 包含测试包的测试套件名称。可选,用于更新测试的统计信息。
 owner_in 定义测试套件以及添加测试包时指定的模式名称。可选,用于更新测试的统计信息。
 reset_results_in 设置为FALSE时不清除结果信息,此时仍然可以调用utResult.show查看结果。否则每次测试之后将会清除结构数据。
 from_suite_in 设置为TRUE时说明该测试从测试套件中运行,仅供内部使用。
 subprogram_in 字符串,用于限制需要运行测试的程序。默认的%代表运行所有的测试。
 per_method_setup_in 设置为TRUE时在运行每个单元测试程序前后都分别执行设置程序和清除程序。默认情况只在包测试开始和结束时运行一次设置程序和清除程序。
 override_package_in 覆盖包名称的自动判断,从而删除测试包与被测试包之间的一一对应关系。默认为NULL。考虑使用utPLSQLrun过程替代该参数。

以下是一些示例。

1. 运行betwnstr函数的单元测试(由于使用了默认的前缀,执行ut_betwnstr测试包)。不重新编译测试包。

 
 

2. 运行包te_employee的全部单元测试,测试包位于/tmp目录中,名称为“test_te_employee”。执行测试之前重新编译测试包。

 
 

3. 运行包corporate_polluters的全部单元测试,测试包与被测试代码位于相同的包中。

 
 

每次运行utPLSQL.test之后将会显示结果。如果测试成功,输出如下所示:

 
 

如果测试失败,输入如下所示:

 
 

运行测试的另一种方法

以上描述的测试程序常用方法假设每个被测试的包,例如mypackage,拥有一个对应的测试包,名称为被测试包名加上一个前缀:ut_mypackage。除了该方法之外,还可以使用run过程。该过程直接运行测试包,不需要满足其他条件。唯一的条件是满足一个有效测试包的命名约定。

 
 

参数定义如下表。

 test_package_in 测试包的名称。
 prefix_in 前缀,与package_in组成测试包的名称。如果没有指定值,使用NULL作为默认值。即使用第一个参数指定的包名。
 suite_in 包含测试包的测试套件名称。可选,用于更新测试的统计信息。
 owner_in 定义测试套件以及添加测试包时指定的模式名称。可选,用于更新测试的统计信息。
 reset_results_in 设置为FALSE时不清除结果信息,此时仍然可以调用utResult.show查看结果。否则每次测试之后将会清除结构数据。
 from_suite_in 设置为TRUE时说明该测试从测试套件中运行,仅供内部使用。
 subprogram_in 字符串,用于限制需要运行测试的程序。默认的%代表运行所有的测试。
 per_method_setup_in 设置为TRUE时在运行每个单元测试程序前后都分别执行设置程序和清除程序。默认情况只在包测试开始和结束时运行一次设置程序和清除程序。

运行测试套件

除了运行单个测试包的测试之外,可以设置包含一个或多个测试包的测试套件。然后可以调用utPLSQL.testsuite运行整个测试套件。

 
 

其中suite_in为测试套件的名称,recompile_in决定了自动编译的方式。

以下是运行PL/Vision库全部测试的示例:

 
 

utPLSQL.testSuit的参数列表比utPLSQL.test少很多,可以在套件内部定义这些特性,存储在utPLSQL的表中。

在运行整个测试套件之前。必须定义测试套件

运行测试套件的另一种方法

与测试单个包的run过程类似,runsuite过程用于运行测试套件。该过程不假设测试包名称与被测试程序之间存在任何关联。

 
 

参数的使用方法参见testsuite。

记录与访问测试统计信息

如果定义了测试套件,以及测试包,utPLSQL将会在每次测试之后更新以下统计信息:

  • 最后一次运行状态:成功或者失败?
  • 最后一次运行的开始时间与结束时间
  • 失败总次数
  • 测试总次数

以上信息自动执行统计。然后可以使用表ut_package与表ut_suite编写查询与报告。

2、返回utPLSQL版本

运行函数utPLSQL.version返回当前安装的版本。

 
 

3、utPLSQL跟踪

以下程序没有参数:

 
 

程序trc与notrc分别用于打开与关闭跟踪功能。函数tracing在跟踪打开时返回TRUE,关闭时返回FALSE。这个功能对于编写框架代码自身很有用。以下是一个跟踪输出的示例:

 
 

4、注册单元测试

从1.4.1版起,不再需要显式注册单元测试。utPLSQL默认会从数据字典(ALL_ARGUMENTS视图)中提取所有单元测试程序的名称,然后运行测试。utPLSQL通过指定前缀查找这些程序。

如果想要显示注册单元测试,需要打开手动注册功能:

 
 

该设置立即存储在当前模式的配置中。以下命名关闭手动注册功能:

 
 

在设置程序中手动注册单元测试。这些单元测试的信息不进行永久保存,除非在测试套件中定义单元测试。

使用utPLSQL.addtest过程注册单元测试。

PROCEDURE utPLSQL.addtest (
      NAME_IN IN VARCHAR2,
      utprefix_in IN VARCHAR2,
      iterations_in IN PLS_INTEGER := 1
   );
 
   PROCEDURE utPLSQL.addtest (
      package_in IN VARCHAR2,
      NAME_IN IN VARCHAR2,
      utprefix_in IN VARCHAR2,
      iterations_in IN PLS_INTEGER := 1
   );

其中,name_in是单元测试程序的名称,包括前缀;utprefix_in当前未使用;iterations_in是该测试运行的次数,当前未使用;package_in是包含该单元测试程序的包名。如果指定了包名,将会覆盖utPLSQL.test中指定的包名,只对该测试有效。

以下是一个设置了一系列用于employee表查询封装的测试的设置程序。

 
 下一个,utConfig包 
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24945919/viewspace-743239/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24945919/viewspace-743239/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值