news 2026/3/15 13:22:58

第三方数据库测试:【utPLSQL用于Oracle和tSQLt用于SQL Server数据库单元测试框架入门】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第三方数据库测试:【utPLSQL用于Oracle和tSQLt用于SQL Server数据库单元测试框架入门】

utPLSQL(用于Oracle)和tSQLt(用于SQL Server)这两个数据库单元测试框架的入门指南。

对比:

utPLSQL适用数据库Oracle,tSQLt适用数据库Microsoft SQL Server

utPLSQL基于包(Package)和注解(Annotations)的声明式测试。tSQLt基于模式(Schema)和测试类(Test Class)的隔离测试。

utPLSQL使用%suite, %test等注解在包规格中组织测试套件和用例。tSQLt将测试分组到以Test为后缀的独立架构中。

utPLSQL的断言ut.expect(actual).to_equal(expected); 的链式语法。tSQLt的断言EXEC tSQLt.AssertEquals @Expected, @Actual; 的过程调用风格。

utPLSQL通过%beforeall, %beforeeach等注解管理夹具。tSQLt的核心功能是事务回滚和假表(FakeTable),确保测试隔离。

utPLSQL测试代码通常和被测对象分离。tSQLt测试代码和被测对象在同一数据库,但通过架构隔离。

utPLSQL工具集成被DataGrip, IntelliJ IDEA等主流IDE原生支持。tSQLt工具集成被SQL Server Management Studio插件及JetBrains Rider等IDE支持。

utPLSQL (Oracle) 入门

utPLSQL是一个用于Oracle PL/SQL的开源单元测试框架。允许以声明式的方式定义测试。

1. 安装和设置

下载:从官方GitHub仓库获取最新版本。

安装:以管理员身份(如SYS)运行install.sql脚本,该脚本会在目标数据库中创建UT3(或类似)用户及所有框架对象。

授权:将UT3用户的执行权限授予你的开发用户:GRANT EXECUTE ON ut3.ut TO your_user;。

2. 编写第一个测试

按照 “先测试,后实现” 的TDD循环。以下是测试一个自定义sub_str函数的步骤:

步骤1:创建被测函数(即使它是空壳或未实现)。

步骤2:创建测试包规格:使用注解声明测试套件和用例。

CREATE OR REPLACE PACKAGE test_sub_str AS --%suite(子字符串功能测试) -- 测试套件 --%test(起始位置非零时返回子字符串) -- 单个测试用例 PROCEDURE test_normal_case; --%test(起始位置为零时的边界情况) PROCEDURE test_zero_start; END test_sub_str;

步骤3:创建测试包体:在包体内实现测试过程,使用ut.expect进行断言。

CREATE OR REPLACE PACKAGE BODY test_sub_str AS PROCEDURE test_normal_case IS BEGIN ut.expect( sub_str('1234567', 2, 5) ).to_equal('2345'); -- 断言 END; PROCEDURE test_zero_start IS BEGIN ut.expect( sub_str('1234567', 0, 5) ).to_equal('12345'); END; END test_sub_str;

步骤4:运行测试(此时应失败),然后实现sub_str函数使其通过测试。

3. 概念

除了to_equal,还支持to_be_null, to_match(正则), to_raise(异常)等。

使用%beforeall, %aftereach, %beforeeach, %afterall注解来设置和清理测试环境。

使用%tags注解为测试分类,运行时可以只执行特定标签的测试。

4. 运行测试

SQL命令行:BEGIN ut.run('TEST_SUB_STR'); END; 或 EXEC ut.run('TEST_SUB_STR');。

IDE集成:在DataGrip或IntelliJ IDEA中,你可以右键点击测试包直接运行,并图形化查看通过/失败结果。

tSQLt (SQL Server) 详细入门

tSQLt是一个专为SQL Server设计的、符合TDD理念的单元测试框架。

1. 安装和设置

下载:从官方 (tSQLt.org) 下载tSQLt.zip。

启用CLR:在目标数据库执行:EXEC sp_configure 'clr enabled', 1; RECONFIGURE;。

安装:解压后,以具有管理员权限的用户在目标数据库中运行PrepareServer.sql和tSQLt.class.sql。

2. 编写第一个测试

tSQLt是事务回滚和假表(FakeTable),保证测试不污染数据。

步骤1:创建测试类:这是一个独立的架构,用于隔离测试。

EXEC tSQLt.NewTestClass 'Test_StringFunctions'; -- 创建名为[Test_StringFunctions]的架构

步骤2:创建测试存储过程:在该架构下,以test_开头命名的存储过程会被自动识别为测试。

CREATE OR ALTER PROCEDURE Test_StringFunctions.[test SubString returns correct part] AS BEGIN -- 准备阶段:声明预期和实际变量 DECLARE @Expected VARCHAR(10) = '2345'; DECLARE @Actual VARCHAR(10); -- 执行阶段:调用被测函数 SELECT @Actual = dbo.Sub_Str('1234567', 2, 5); -- 断言阶段 EXEC tSQLt.AssertEquals @Expected, @Actual; END;

步骤3:使用假表:测试涉及表的逻辑时,用tSQLt.FakeTable替换真实表,避免数据依赖。

EXEC tSQLt.FakeTable @TableName = 'dbo.Orders'; -- 创建一个结构相同、无数据的假表 -- 然后可以向假表插入测试专用数据

3. 概念

断言函数:AssertEquals, AssertEqualsString, AssertLike, AssertResultSetsHaveSameMetaData等。

异常测试:使用tSQLt.ExpectException来断言存储过程应抛出特定错误。

所有在Test_开头的架构下的test_存储过程,可以通过tSQLt.RunAll一次性运行。

4. 运行测试

SQL命令行:运行单个测试类:EXEC tSQLt.Run 'Test_StringFunctions'; 运行所有测试:EXEC tSQLt.RunAll;。

IDE集成:可在SQL Server Management Studio中通过插件运行,或在JetBrains Rider中配置数据源后直接运行。

文章来源:卓码软件测评

精彩推荐:点击蓝字即可
软件负载测试API自动化测试软件测试第三方软件测试软件性能测试软件测试机构

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/15 9:45:36

如何快速掌握CodeLlama-34b-Instruct-hf:开发者的终极指南

如何快速掌握CodeLlama-34b-Instruct-hf:开发者的终极指南 【免费下载链接】CodeLlama-34b-Instruct-hf 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/CodeLlama-34b-Instruct-hf CodeLlama-34b-Instruct-hf作为Meta推出的34亿参数指令调优模型…

作者头像 李华
网站建设 2026/3/14 1:23:17

1小时快速搭建:Linux Docker原型验证

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 请设计一个快速原型开发模板,包含:1. 多语言选择(Python/Node.js/Go)2. 预配置的开发容器 3. 热重载支持 4. 内置测试框架 5. 一键部…

作者头像 李华
网站建设 2026/3/13 0:04:08

Qwen3-14B-AWQ:在消费级硬件上运行140亿参数大模型的终极指南

你是否曾因大模型高昂的硬件要求而望而却步?Qwen3-14B-AWQ正是为你量身打造的解决方案。这款来自阿里巴巴通义千问团队的轻量化模型,通过AWQ 4-bit量化技术将140亿参数压缩至消费级GPU可承受范围,让你在单张显卡上就能享受顶级AI能力。 【免费…

作者头像 李华
网站建设 2026/3/12 15:24:19

5步实现云顶之弈智能托管系统:零基础配置到高效运行全攻略

5步实现云顶之弈智能托管系统:零基础配置到高效运行全攻略 【免费下载链接】LOL-Yun-Ding-Zhi-Yi 英雄联盟 云顶之弈 全自动挂机刷经验程序 外挂 脚本 ,下载慢可以到https://gitee.com/stringify/LOL-Yun-Ding-Zhi-Yi 项目地址: https://gitcode.com/gh_mirrors/l…

作者头像 李华
网站建设 2026/3/12 23:29:32

25G光模块:驱动5G与数据中心升级的关键引擎

随着5G网络的大规模部署和数据中心流量激增,网络接口正经历从10G到25G的代际跨越。25G SFP28光模块以其翻倍的带宽和优异的性价比,成为支撑5G前传、数据中心互联及企业核心网络升级的主流选择。面对多样的应用场景,25G光模块已发展出丰富的技…

作者头像 李华
网站建设 2026/3/14 1:19:28

从零到一:AI游戏辅助的技术探索之旅

在当今游戏竞技领域,AI游戏辅助技术正悄然掀起一场革命。你是否好奇,深度学习如何让计算机像人类一样精准识别目标?目标检测算法又是怎样实现智能瞄准的?让我们一起踏上这场技术探索之旅,揭开RookieAI_yolov8项目背后的…

作者头像 李华