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
- 努尼特
- dbFit将在事务中隐式运行,并在每个测试结束时自动回滚
- 层次结构使您能够添加可应用于多个测试的安装和拆卸脚本
- 您可以创建一组单独的测试,这些测试按顺序执行所有测试
- 与我们的持续集成服务器TeamCity集成(在某种程度上)
- dbFit将在事务中隐式运行,并在每个测试结束时自动回滚
- 层次结构使您能够添加可应用于多个测试的安装和拆卸脚本
- 您可以创建一组单独的测试,这些测试按顺序执行所有测试
- 与我们的持续集成服务器TeamCity集成(在某种程度上)
- 数据库将具有与实际执行时相同的状态,而不是您认为它将具有的状态
- 如果需要进行更改,例如对架构进行更改,则只需更改生产代码即可
- 测试涵盖了更多功能
- 数据库仅填充此特定用例所需的数据
- 测试更容易阅读(插入脚本不容易阅读)
- 慢一点
- 如果您需要大量数据(这是罕见的),则无法正常工作
- 数据库将具有与实际执行时相同的状态,而不是您认为它将具有的状态
- 如果需要进行更改,例如对架构进行更改,则只需更改生产代码即可
- 测试涵盖了更多功能
- 数据库仅填充此特定用例所需的数据
- 测试更容易阅读(插入脚本不容易阅读)
- 慢一点
- 如果您需要大量数据(这是罕见的),则无法正常工作
- 你说你不想使用ORM,但我选择在我的回答中忽略这一点。对不起:)
如何填充
我更喜欢使用与用户相同的操作将数据插入数据库。也就是说,如果我需要数据库中某个产品的订单,我将使用管理界面创建该产品,让用户使用公共界面创建一个帐户,并让该用户下订单
这不必通过单击实际UI中的按钮来完成,但最好使用UI的底层抽象
好处:
希望它能对你有所帮助,尽管它不是你问题的答案。你说你不想使用ORM,但我选择在我的回答中忽略这一点。对不起:) 如何填充 我更喜欢使用与用户相同的操作将数据插入数据库。也就是说,如果我需要数据库中某个产品的订单,我将使用管理界面创建该产品,让用户使用公共界面创建一个帐户,并让该用户下订单 这不必通过单击实际UI中的按钮来完成,但最好使用UI的底层抽象 好处: