utPLSQL:一个 Oracle PL/SQL 单元测试框架

utplsql


utPLSQL 简介

utPLSQL 是一个 Oracle PL/SQL 和 SQL 单元测试框架,遵循类似于 JUnitRSpec 的行业标准和现代化单元测试框架的最佳模式。utPLSQL 是一个开源项目,基于 Apache-2.0 协议,源代码全部使用 PL/SQL 实现,托管在 GitHub 上。

著名的 Toad for Oracle 工具就是基于 utPLSQL 构建了单元测试功能, utPLSQL 支持以下代码的自动测试:

  • 程序包(Package)
  • 函数(Function)
  • 过程(Procedure)
  • 触发器(Trigger)
  • 视图(View)
  • 可以在 PL/SQL 中执行和观测的任何其他代码

utPLSQL 提供的关键功能包括:

  • 多种方式与匹配器(matcher)进行数据比较;
  • 复杂类型(对象/集合/游标)的原生比较;
  • 测试失败和错误的详细且规范的报告;
  • 通过注解指定和配置测试用例;
  • 通过注解配置测试套件的层次结构;
  • 自动事务控制(可配置);
  • 内置的测试覆盖率报告;
  • 通过报告器(reporter)与 SonarQube、Coveralls、Jenkins 以及 Teamcity 进行集成;
  • 插件式的报告器和匹配器体系结构;
  • 简单灵活的测试调用方法;
  • 通过命令行运行测试并生成各种报告。

utPLSQL 目前的版本为 Version 3,支持 Oracle 11.2 以及更高版本。

使用 utPLSQL 测试 PL/SQL 代码只需要简单的三个步骤:

  1. 安装 utPLSQL 测试框架;
  2. 创建单元测试用例;
  3. 运行测试用例;

下图是通过 SQL Developer 创建业务代码、测试用例以及运行测试的一个简单过程:

test

首先,我们需要安装 utPLSQL。

下载安装

整个项目包含了多个模块,可以单独进行下载安装:

  • utPLSQL 框架,核心测试框架,点此进行下载;
  • utPLSQL-cli,运行 utPLSQL 测试的 Java 命令行客户端,点此进行下载;
  • utPLSQL-maven-plugin,运行 utPLSQL 测试的 maven 插件,点此进行下载;
  • utPLSQL SQL Developer 插件,运行 utPLSQL 测试的 SQL Developer 插件,点此进行下载;

我们以 utPLSQL 核心框架的安装为例,其他模块的安装可以参考下文中的相关文档。通过上面的下载链接,可以选择下载 utPLSQL.zip 或者 utPLSQL.tar.gz 文件,然后解压该文件。

[oracle@sqlhost ~]$ cd utPLSQL/source/
[oracle@sqlhost source]$ ls
api                                        create_utplsql_owner.sql           install.sql
check_object_grants.sql                    define_ut3_owner_param.sql         reporters
check_sys_grants.sql                       dummy.sql                          set_install_params.sql
core                                       expectations                       uninstall_all.sql
create_grants.sql                          install_above_12_1.sql             uninstall_coverage_tables.sql
create_synonyms_and_grants_for_public.sql  install_component.sql              uninstall_objects.sql
create_synonyms.sql                        install_ddl_trigger.sql            uninstall.sql
create_user_grants.sql                     install_headless.sql               uninstall_synonyms.sql
create_user_synonyms.sql                   install_headless_with_trigger.sql

source 目录中提供了 utPLSQL 的源代码以及各种安装和卸载脚本,推荐使用 install_headless_with_trigger.sql 进行安装:

[oracle@sqlhost source]$ sqlplus / as sysdba @install_headless_with_trigger.sql

以上命令使用 SYSDBA 角色运行安装脚本,该脚本会创建一个新的模式用户(ut3),密码为 XNtxj8eEgA6X6b6f;默认使用 users 表空间;同时会将其授权给 public。

安装完成会显示类似以下信息:

No errors.
--------------------------------------------------------------
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

No errors 表安装成功。

可以运行以下 SQL 语句查看 utPLSQL 的版本:

select ut.version() from dual;
UT.VERSION()|
------------|
v3.1.10.3349|

也可以简单运行一下测试:

SQL> set serveroutput on;
SQL> call ut.run();
Finished in .000012 seconds
0 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)

Call completed.

我们还没有创建任何测试用例,所以上面的语句没有执行实际的操作,但是表明 utPLSQL 能够正常运行。

utPLSQL 支持其他的安装方法和选项,可以参考官方用户指南

如果需要卸载 utPLSQL,可以使用 uninstall.sql 脚本,提供 utPLSQL 所在的模式名即可:

sqlplus / as sysdba @uninstall.sql ut3

该脚本会删除之前安装的对象,但是不会删除模式用户。

另外一种卸载方法就是直接删除 utPLSQL 模式用户。

相关资源

定期更新数据库领域相关文章,欢迎点赞

相关文章

文章浏览阅读773次,点赞6次,收藏9次。【代码】c# json字符...
文章浏览阅读8.7k次,点赞2次,收藏17次。此现象一般定位到远...
文章浏览阅读2.8k次。mysql脚本转化为oracle脚本_mysql建表语...
文章浏览阅读2.2k次。cx_Oracle报错:cx_Oracle DatabaseErr...
文章浏览阅读1.1k次,点赞38次,收藏35次。本文深入探讨了Or...
文章浏览阅读1.5k次。默认自动收集统计信息的时间为晚上10点...