56星座屋
当前位置: 首页 星座百科

struts框架的工作流(使用tsqlt框架的)

时间:2023-05-25 作者: 小编 阅读量: 2 栏目名: 星座百科

SP通常是手动测试的,我们避免添加自动化测试。在敏捷环境中,未经测试的代码在某些时候容易出现缺陷。数据库可以在本地、云或任何虚拟机中运行。SQL1执行tsqlt.NewTestClass'EMPLOYEE'2去注意新创建的对象内的测试。测试模式我们为返回结果和更新记录的SP编写不同结构的测试。两者没有重大区别,但在填充预期表和实际表方面有一个简单的区别。运行SP并将结果放入“实际”表中。

编写单元测试来测试代码是编程中不可避免的做法。测试存储过程与其他代码一样重要。SP通常是手动测试的,我们避免添加自动化测试。在敏捷环境中,未经测试的代码在某些时候容易出现缺陷。在本文中,让我们了解一下tsqlt框架——一个用于SQL Server的开源数据库单元测试框架。

先决条件
  • 代码编辑器(例如 IntelIj)
  • SQL 数据库

将您的编辑器附加到正在运行的数据库。数据库可以在本地、云或任何虚拟机中运行。


创建测试对象

创建一个新的测试类,如下所示。在附加的 DB 会话中运行它会在 DB 中创建一个测试对象。我们将在此对象中添加所有测试脚本(SP)。

SQL1执行 tsqlt .NewTestClass 'EMPLOYEE'2去


注意新创建的对象内的测试。我们将在下面详细阅读测试。我们现在都准备好编写测试了。


表和 SP 详细信息

下面是我们将在本文中看到的示例的表格详细信息和 SP。

表名: 具有列 emp_no、emp_name 和薪水的员工。


存储过程 1: 从表中选择行。

CREATE PROCEDURE [dbo].[get_all_employees_v1]
AS
BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SELECT emp_no
, emp_name
, salary
FROM dbo.employee c
END
GO

存储过程2:插入一条新记录。


CREATE PROCEDURE [dbo].[update_employees_v1]
@emp_no INT
,@emp_name VARCHAR(20)
,@salary INT

AS
BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

INSERT INTO dbo.employee (emp_no, emp_name, salary)
VALUES (@emp_no, @emp_name, @salary)
END
GO


让我们看看如何为上述 SP 编写测试。

测试模式

我们为返回结果和更新记录的 SP 编写不同结构的测试。两者没有重大区别,但在填充预期表和实际表方面有一个简单的区别。

对于选择:
  1. 创建假表。
  2. 将测试数据插入表中。
  3. 创建预期和实际表。
  4. 运行 SP 并将结果放入“实际”表中。
  5. 比较“预期”和“实际”表。


CREATE OR ALTER PROCEDURE [EMPLOYEE].[test employee]
AS
BEGIN
-- ARRANGE (fake synonym table employee is created)
EXEC tSQLt.FakeSynonymTable 'employee', 'dbo';

-- Test data insertion
INSERT INTO dbo.employee (emp_no, emp_name, salary) VALUES (2, 'xxx', 1000);

-- Actual table is defined
SELECT emp_no, emp_name, salary INTO #actual FROM dbo.employee where 1 = 0

-- Create an empty #Expected temp table that has the same structure as the #Actual table
SELECT TOP (0) *
INTO #expected
FROM #actual;

-- Run the SP and store results in actual table
INSERT INTO #actual
EXEC dbo.get_all_employees_v1

-- Populate expected table with desired results
INSERT INTO #expected (emp_no, emp_name, salary) VALUES (2, 'xxx', 1000);

-- Assert expected and actual
EXEC tSQLt.AssertEqualsTable '#expected', '#actual', 'missing expected row'

END
GO

使用下面的代码运行测试并查看测试是否通过:

EXEC tSQLT.RUN 'EMPLOYEE.[test employee]'



插入或更新或删除:
  1. 创建假表。
  2. 将测试数据插入表中。
  3. 创建预期和实际表。
  4. 运行 SP。
  5. 将修改过的记录从原始表复制到实际。
  6. 比较“预期”和“实际”表。

CREATE OR ALTER PROCEDURE [EMPLOYEE].[test update_employee]
AS
BEGIN
-- ARRANGE (fake synonym table employee is created)
EXEC tSQLt.FakeSynonymTable 'employee', 'dbo';

-- Create expected tables
CREATE TABLE #expected (emp_no int, emp_name VARCHAR(20), salary int)

-- Run the SP
EXEC dbo.update_employees_v1 @emp_no=1, @emp_name='test', @salary=300

-- Above step had already create a new record in the table. Read it and store it in actual table
SELECT emp_no, emp_name, salary INTO #actual FROM dbo.employee WHERE emp_no=1

-- Populate expected table with desired results
INSERT INTO #expected (emp_no, emp_name, salary) VALUES (1, 'test', 300);

-- Assert expected and actual
EXEC tSQLt.AssertEqualsTable '#expected', '#actual', 'missing expected row'

END
GO


使用以下命令运行测试:

EXEC tSQLT.RUN 'EMPLOYEE.[test employee]'



结论

为任何一段代码编写测试对于防止错误很重要。SP也不例外。为 SP 编写自动化测试是非常早且高效地测试它们的好选择。

    推荐阅读
  • 加油妈妈何晓涵富二代(加油妈妈何晓涵二胎小产)

    当何晓涵发现抑郁症药物会对腹中胎儿有影响时,她立即前往医院进行检查,医生告诉她最好不能要这个孩子,否则会有畸形的可能。由于婆婆的无知和过度干预,医生警告到何晓涵以后可能再也没办法要孩子了,这让婆婆犹如晴天霹雳一般,可此时的何晓涵却感到了一丝丝的解脱。终于,何晓涵看清了这一切,她鼓起勇气向田思扬提出了离婚。

  • 暖心的一句早上好(比较暖的早安心语)

    暖心的一句早上好不开心是最可怕的催老剂,要做一个爱笑的小仙女,早安鸭。但若是你不是真心的想要去完成一件事情,那么纵使前方道路平坦,你也会想尽一切理由阻止自己向前。要继续长成厉害的大人,永远是万事胜意的女孩,早安。梦想就是一颗种子,唯有坚持不懈地浇灌和守护,它才能盛开绽放,早安,新的一天。心情要好,人要美,生活要嗨。

  • 金风科技核心业务占比(市占率11年国内第一后)

    3月28日,公布业绩后的首个交易日,金风科技在沪港两市均收跌。此前曾有传闻称王义政失联,福佳集团通过媒体予以否认。此次转让完成后,福佳集团持有和谐健康51%股权,成为控股股东,王义政成为和谐健康实际控制人。此前曾有传闻称王义政失联,福佳集团通过媒体回应称该消息不实,王义政因身体原因正住院接受治疗,近期将重返工作岗位。

  • 小米手机截屏方式有哪些(用了3年小米手机)

    小米手机截屏方式有哪些?小米手机截屏方式有哪些我们都知道,现在使用小米手机的小伙伴是越来越多了,很多小伙伴都因为小米手机的高性价而成为了米粉。好啦,以上就是小米手机花式截屏的操作了,相信大家都知道了吧,要是有兴趣的小伙伴也可以去试一试,不知道大家都知道吗?

  • 我国将对使用新能源车船免征车船税 新能源 车船使用税

    根据三部门发布的通知,我国将对使用新能源车船免征车船税。免征车船税的使用新能源汽车包括纯电动商用车、插电式混合动力汽车、燃料电池商用车。纯电动乘用车和燃料电池乘用车不属于车船税征税范围,对其不征车船税。免征车船税的车型有:1、使用新能源的纯电动商用车2、使用新能源的插电式混合动力汽车3、使用新能源的燃料电池商用车等则是免收税费4、纯电动乘用车和燃料电池乘用不收车船税。

  • 含金量高的英语名著(想快速阅读英文经典)

    想快速阅读英文经典学英文,看世界英语微阅读点击关注“趣Elaine的英语世界”,获取最干货的英语学习方法和资料掌握和读懂英文经典名著里的核心句子,就基本上掌握了小说的神韵今天,让我们再一次赏析英文名著里那些散发思想和艺。

  • 使命召唤怎么认证 使命召唤在哪实名认证

    2、打开页面后,点击左上角的头像——我的QQ钱包。

  • 地暖管什么牌子好(正规的地暖地热竟要这么做)

    如果配管幅度最小直径以下时,应成为哑铃状的形状。用于水热地面辐射采暖的木地板,要求在高湿状态下尺寸变化小,膨胀率要小于等于2.5%。一般来说,膨胀率越小,木地板的防潮性能越好。

  • 什么样的茶属于浓茶 什么样的茶才属于浓茶

    浓茶还可以帮助消炎杀菌,对于那些患有口腔发炎以及咽喉肿痛的人来说,喝浓茶具有非常好的消炎杀菌的功效和作用。有些人牙齿表面会粘了一层釉黑色的东西,也很有可能是平时就是长期饮用浓茶所导致的。而且对于那些患有神经衰弱以及身体虚弱和胃寒的人来说,都不适合喝浓茶,否则可能会使病症加重。浓茶之所以能够帮助提神,是神经中枢具有兴奋的作用,因为茶中含有一些咖啡碱以及茶碱,都是能够导致的神经系统变得兴奋。

  • 前方路漫漫5(漫漫金兰路五)

    果然,宝钗一指出酒令的事,一向嘴不饶人的黛玉立刻怂了。黛玉感激的是宝钗关心她的真诚态度。古代对女性在言行举止方面的要求更严格、更保守,自由恋爱题材方面的戏曲纯属娱乐,但是不能进入闺阁生活。正因为宝钗今年满十五岁,是将笄之年,贾母才给她过生日,这是书中的关键性情节。作者对黛玉这一特点的刻画堪称是不遗余力。可宝钗不但不取笑她,反而来还提醒她、规劝她,这使她的思想上产生了剧烈的震动。