我们使用MS SQL Server和C#。我们的数据库受到资源控制,我将告诉您一些实施细节。我们实施了两项操作:
将数据库导出为纯文本文件。数据库模式文件: tables.sql relationships.sql views.sql ... 和表内容文件: 数据/ table1.txt 数据/ table2.txt ... 使用源控制日志可以轻松查看数据库更改,因为所有这些文件都具有纯文本格式。 Imlementation基于命名空间Microsoft.SqlServer.Management.Smo。
从此纯文本文件导入数据库。实现非常简单 - 只需从* .sql文件执行sql语句,然后执行一堆插入。
所以我们有两个bat文件:create-test-databse.bat和export-test-database.bat。当开发人员需要新的测试数据库时,他只执行bat文件并等待一分钟。 每个需要数据库的功能测试都会创建一个新数据库,使用它然后将其杀死。但我应该说它的运作速度不是很快。 :(
那么您使用什么工具将数据库置于源代码管理之下? 我的意思是你如何实现“创建测试数据库”和“导出测试数据库”这样的操作?
答案 0 :(得分:2)
我想你在这里问两个问题。第一个是如何在源代码管理下获取数据库。您的解决方案很有趣,我也使用Visual Studio Team Edition for Database Professionals(这是我在TDD of stored procedures上使用它编写的教程)
第二个是如何设置数据库以进行集成测试。设置和拆除整个数据库似乎有点矫枉过正。有几种解决方案。我用过DBFit。 Roy Osherove发布了一个名为XtUnit的工具,一段时间我没有玩过。当然,您可以始终设置测试以在SetUp中执行事务,并在拆解期间执行回滚。
答案 1 :(得分:1)
我们使用Visual Studio for Database Professionals。没有它就不要离开家。
答案 2 :(得分:0)
我将VSTS用于DB Pros。您将它指向您的SQL服务器,它会分析您的数据库并为您创建单个文件。您甚至可以让它为您生成测试数据。下一个版本将包括对第三方提供商的支持(想想Oracle,MySQL,DB2)。
这里真正重要的功能是验证。我们发现我们数据库的某些部分完全被破坏了(它们是残留的,不再被代码使用)。它基本上可以按需部署您的数据库。