数据库再次在源代码控制之下!
时间:2020-03-06 14:51:32 来源:igfitidea点击:
我们使用MS SQL Server和C#。我们的数据库受到严格控制,我将告诉我们一些实施细节。我们执行了两个操作:
- 将数据库导出到纯文本文件。数据库模式文件:tables.sql Relationships.sql views.sql ...和表内容文件:Data / table1.txt Data / table2.txt ...使用源代码控制日志很容易查看数据库更改,因为所有这些文件纯文本格式。实施基于命名空间Microsoft.SqlServer.Management.Smo中的类。
- 从此纯文本文件导入数据库。实现非常简单-只需从* .sql文件执行sql语句,然后执行大量插入操作即可。
因此,我们有两个bat文件:create-test-databse.bat和export-test-database.bat。当开发人员需要新的测试数据库时,他只执行bat文件并等待一分钟。
每个需要数据库的功能测试都将创建一个新数据库,使用它,然后将其杀死。但是我应该说这不是很快的操作。 :(
那么,我们使用什么工具将数据库置于源代码控制之下?
我的意思是,例如,我们如何实现"创建测试数据库"和"导出测试数据库"操作?
解决方案
我们使用Visual Studio for Database Professionals。不要没有它就离开家。
我将VSTS用于DB Pro。我们将其指向SQL Server,它会分析数据库并为我们创建单个文件。我们甚至可以让它为我们生成测试数据。下一版本将包括对第三方提供商的支持(请考虑Oracle,MySQL,DB2)。
此处真正的最大功能是验证。我们发现数据库的某些部分完全损坏了(它们是残留的,不再被代码使用)。基本上,它使按需部署数据库成为可能。
我想我们在这里问两个问题。第一个是如何使数据库处于源代码控制之下。解决方案很有趣,并且我还使用了Visual Studio Team Edition for Database Professionals(这是我针对使用它的存储过程的TDD编写的教程)
第二个是如何设置数据库以进行集成测试。设置和拆除整个数据库似乎有点过头了。有几种解决方案。我用过DBFit。 Roy Osherove发布了一个我还没有玩过的工具XtUnit。而且,当然,我们始终可以将测试设置为在SetUp中进行事务启动,并在拆卸期间进行回滚。