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

作者: 不剪发的Tony老师
毕业于北京航空航天大学,十多年数据库管理与开发经验,目前在一家全球性的金融公司从事数据库架构设计。CSDN学院签约讲师以及GitChat专栏作者。csdn上的博客收藏于以下地址:https://tonydong.blog.csdn.net

文章目录

        utPLSQL 简介
        下载安装
        相关资源

utPLSQL 简介

utPLSQL 是一个 Oracle PL/SQL 和 SQL 单元测试框架,遵循类似于 JUnit 和 RSpec 的行业标准和现代化单元测试框架的最佳模式。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 代码只需要简单的三个步骤:

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

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

首先,我们需要安装 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 模式用户。
相关资源

    utPLSQL 官方文档;
    一个完整的 utPLSQL 演示项目;
    在线视频:Oracle PL/SQL 单元测试;
    utPLSQL Cheat Sheet;
    utPLSQL-cli 说明文件;
    utPLSQL maven 插件说明文件;
    utPLSQL SQL Developer 插件说明文件;
    博客文章:在 SQL Developer 中运行 utPLSQL 测试。

定期更新数据库领域相关文章,欢迎点赞👍、评论📝、收藏❤️!