1

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

我需要知道的是,我怎么能清除整个数据库中运行的程序,因为它会检查新插入的行之前,但需要我告诉它行#检查

这里是一个单元测试调用存储过程插入一个ADDRES代码:

-- 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单元测试的图像: Unit Test

重申怎么办的问题我清除数据库或删除过程运行后插入的任何内容?

也为其他有兴趣的单元测试通过VS这里DB是一个链接:Create Database Unit Tests for Functions, Triggers, and Stored Procedures

+0

+1这个有趣的问题,我一直在寻找很多关于这样做,直到我发现我自己的方法。 –

+0

@Leandro谢谢它需要一段时间才能找出解决方案和资源。我将添加一个链接到我的主帖。 – Kairan

+0

我看到了链接,但例如在我的情况下,数据库上的任何变化都会保留在UT数据库上。我看不到我的回答规定的其他方式,如果你找到一个更好的请回答自己对大家有帮助:) –

回答

0

解决方案1 ​​

我使用一个很好的做法,但它取决于你的生产方针,如果从UT调用,则不承诺。所以每次你得到一个回滚。

解决方案2

如果这是不可能的,因为程序必须影响表什么的,你可以得到记录和调用存储过程用自己的回退过程,只有从UT

称为

解决方案3

而且,在任何情况下,对于这个建议的工作是为了让UT做的环境中,用自己的数据库中的TFS代理运行构建和运行测试时不接触任何CRI tical数据。

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

+0

对不起我的英语水平,请自由编辑这个答案 –

+0

我怎么告诉它回滚每次我根据我的特定样本调用单元测试?我将我的单元测试设置为部署到测试数据库,因此我可以根据自己的需要对它进行清理和清理。 – Kairan

+0

不,您必须修改您的存储过程,您只能直接回滚事务命令,不执行con过程。尝试找到这样的信息:http://stackoverflow.com/questions/3935900/how-to-commit-and-rollback-transaction-in-sql-server –