2008-09-29 38 views
3

我们使用MS SQL Server和C#。我们的数据库在sourse控制下,我会告诉你一些我们实现的细节。我们实施了两项操作:再次在源代码管理下的数据库!

  1. 将数据库导出为纯文本文件。数据库模式文件: tables.sql relationships.sql views.sql ... 和表格内容的文件: 数据/ table1.txt 数据/ table2.txt ... 很容易检查数据库更改使用源代码控制日志,因为所有这些文件都是纯文本格式。 Imlementation基于来自命名空间Microsoft.SqlServer.Management.Smo的类。

  2. 从这个纯文本文件导入数据库。实现很简单 - 只需从* .sql文件执行sql语句,然后执行一堆插入。

所以我们有两个bat文件:create-test-databse.bat和export-test-database.bat。当开发人员需要新的测试数据库时,他只需执行bat-file并等待一分钟。每个需要数据库的功能测试都会创建一个新数据库,然后使用它并杀死它。但我应该说这不是很快的操作。 :(

工具,你用那么是什么把你的数据库源代码控制之下? 我的意思是,你如何实施操作例如“创建测试数据库”和“出口测试数据库”?

回答

1

我们使用Visual Studio对于数据库专业人员,不要离开家,

0

我使用VSTS的DB优点,你指出它在你的SQL服务器,它分析你的数据库并为你创建单个文件,你甚至可以让它生成测试为您的数据,下一个版本将包括对第三方提供商的支持(想想Oracle,MySQL,DB2)

真正伟大的功能在这里是验证。我们发现我们的数据库中的部分内容已经完全损坏(它们已经退化,不再被代码使用)。它基本上可以根据需要部署数据库。

2

我想你在这里问两个问题。首先是如何让你的数据库在源代码控制之下。您的解决方案很有趣,我也使用了Visual Studio Team Edition for Database Professionals(这里是我在TDD of stored procedures上使用它编写的教程)

第二个是如何设置数据库以进行集成测试。设置和拆除整个数据库似乎可能有点矫枉过正。那里有几种解决方案。我用过DBFit。 Roy Osherove发表了一款名为XtUnit的工具,但我还没有玩过。而且,当然,您可以始终设置您的测试,以在SetUp中执行事务启动,并在拆卸过程中执行回滚。