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 模式用户。

相关资源

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Oracle PL/SQLOracle数据库的编程语言,它允许开发人员编写存储过程、触发器、函数和包等数据库对象,以实现更高效、安全和可靠的应用程序。以下是一些Oracle PL/SQL必知必会的知识点: 1. PL/SQL基础语法:包括变量定义、控制结构、循环语句、异常处理等。 2. 存储过程:存储过程是一组SQL语句的集合,可以在其中定义变量、使用控制结构、调用其他存储过程等。 3. 触发器:触发器是一种特殊的存储过程,它会在数据库表上的特定事件发生时自动执行一些操作。 4. 函数:函数是一种可以接受输入参数并返回结果的代码块,它可以用于处理数据、计算等操作。 5. 包:包是一种可以封装存储过程、函数和变量的方式,它可以提供更好的代码管理和组织。 6. 游标:游标是一种可以遍历查询结果集的机制,它可以用于在PL/SQL中处理大量数据。 7. 动态SQL:动态SQL是一种可以在运行时构建和执行SQL语句的机制,它可以提供更大的灵活性和自由度。 8. 性能优化:在编写PL/SQL代码时需要注意性能问题,如尽量避免使用循环、减少数据库访问次数等。 9. 安全性:在编写PL/SQL代码时需要注意安全问题,如避免SQL注入攻击、对敏感数据进行加密等。 以上是Oracle PL/SQL必知必会的一些知识点,掌握它们可以帮助开发人员更好地使用Oracle数据库进行应用程序开发。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不剪发的Tony老师

为 5 个 C 币而折腰。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值