1

我导入了我的 SQL Server 2008 DB 脚本并创建了一个新的 VS 2010 项目来为数据库创建单元测试。它具有检查返回行数和标量变量的内置功能

我需要知道的是如何在运行程序之前清除整个数据库,因为它会检查新插入的行,但需要我告诉它一个 row# 来检查

这是调用存储过程以插入地址的单元测试的代码:

-- database unit test for dbo.spInsertAddress
DECLARE @RC AS INT, @Street AS VARCHAR (60), @City AS VARCHAR (50), @State AS CHAR (20), @Zip AS VARCHAR (10), @Intersection1 AS VARCHAR (60), @Intersection2 AS VARCHAR (60), @AddressID AS INT;

SELECT @RC = 0,
       @Street = 'StreetName',
       @City = NULL,
       @State = NULL,
       @Zip = NULL,
       @Intersection1 = NULL,
       @Intersection2 = NULL;

EXECUTE @RC = [dbo].[spInsertAddress] @Street, @City, @State, @Zip, @Intersection1, @Intersection2, @AddressID OUTPUT;

--SELECT @RC AS RC,
--       @AddressID AS AddressID;
SELECT * FROM Address;

这是 VS 单元测试的图像: 单元测试

重申这个问题,我如何清除数据库或删除程序运行后插入的任何内容?

对于其他对通过 VS 对数据库进行单元测试感兴趣的人,这里有一个链接:为函数、触发器和存储过程创建数据库单元测试

4

1 回答 1

0

解决方案 1

我为此使用了一个好的做法,但这取决于您的生产策略,如果从 UT 调用,则不提交。所以每次你得到一个回滚。

解决方案 2

如果这是不可能的,因为该过程必须影响表或其他东西,您可以获取记录并使用您自己的回滚过程调用存储过程,并且只能从您的 UT 调用

解决方案 3

此外,在任何情况下,推荐的工作是使用您自己的数据库为 UT 做一个环境,以便 TFS 代理运行构建并运行测试而不接触任何关键数据。

如果您想查看其中一些答案,请发表评论,如果您告诉我哪种方法更适合您的使用,我可以为您提供更多帮助。

于 2013-05-14T18:52:33.553 回答