Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据库集成测试结构_C#_Sql_Unit Testing_Integration Testing - Fatal编程技术网

C# 数据库集成测试结构

C# 数据库集成测试结构,c#,sql,unit-testing,integration-testing,C#,Sql,Unit Testing,Integration Testing,为了获得帮助,以下是我的环境: VisualStudio2010和c# 带Sql Management studio的Sql Server 2008 R2 努尼特 我正在创建许多与数据库交互的集成测试。每个测试都必须有一个处于非常特定状态的数据库。我不想使用ORM或直接使用Sql Management studio插入数据 我想要的是两个结构与VMware快照相同的sql脚本 例如: -->[带有系统表(如映射到枚举的表)的主脚本].sql ---->[某些表中有几行].sql ---->[

为了获得帮助,以下是我的环境:

  • VisualStudio2010和c#
  • 带Sql Management studio的Sql Server 2008 R2
  • 努尼特
我正在创建许多与数据库交互的集成测试。每个测试都必须有一个处于非常特定状态的数据库。我不想使用ORM或直接使用Sql Management studio插入数据

我想要的是两个结构与VMware快照相同的sql脚本

例如:

-->[带有系统表(如映射到枚举的表)的主脚本].sql

---->[某些表中有几行].sql

---->[其他表中的其他几行].sql

---->[另一个测试的两行].sql

---->[用于处理其他情况的其他两行].sql

使用这种类型的结构,我将能够回滚到快照的特定版本,以将数据库设置为特定状态,然后在结构中创建另一个快照分支

在每次测试之前,我清理数据库中的所有表,然后执行特定的sql脚本

使用数据库进行集成测试是一种好方法吗

是否存在执行此类型sql脚本结构的工具

你有最佳实践的清单吗

如果我想做什么不是一个好主意,那么做这类测试的最佳架构和方法是什么

非常感谢。

对于这种数据库测试,我们还使用SQL 2008 R2。我不确定VMWare快照的结构是什么样的,但FinNesse允许您构建一组分层测试(具有类似wiki的结构和语法)

从我自己的观点来看,主要的好处是:

  • dbFit将在事务中隐式运行,并在每个测试结束时自动回滚
  • 层次结构使您能够添加可应用于多个测试的安装和拆卸脚本
  • 您可以创建一组单独的测试,这些测试按顺序执行所有测试
  • 与我们的持续集成服务器TeamCity集成(在某种程度上)
对于这种数据库测试,我们还使用SQL 2008 R2。我不确定VMWare快照的结构是什么样的,但FinNesse允许您构建一组分层测试(具有类似wiki的结构和语法)

从我自己的观点来看,主要的好处是: