我正在使用 ADO.NET Entity Framework ,并且正在使用连接到本地数据库服务器的 AdventureWorks 数据库。对于单元测试,人们采用了哪些方法来处理数据库?
显然,数据库必须处于预定义的更改状态,以便测试可以彼此隔离......所以我需要能够运行插入和更新,然后在两者之间回滚测试或一批测试完成后。
有什么建议吗?
谢谢。
最佳答案
我遇到过类似的情况。
将数据存储到数据库并将它们保留到以前的状态并不是理想的单元测试。它们是集成测试用例。
为了执行集成测试(插入/更新操作)而不影响实际数据,我建议如下
<强>1。使用不同的数据库(更改实际数据库的名称),并让架构保持与实际数据库相同。
<强>2。将单元测试指向新创建的数据库。
<强>3。现在我们如何创建一个新的数据库,以自动方式单独运行测试?
答案:将 SQL 脚本列在批处理文件中,例如这个。(这里我假设您使用的是 SQL SERVER)
例如,sqlcmd -i c:\data\runscripts\InventoryMonthEnd.sql
指定批处理文件,存放要在 MSBuild 进程中执行的 sql 语句。
示例 MSBuild 任务。
<ItemGroup>
<StoredProcScripts Include="$(RelativeSPDir)/*.sql" />
</ItemGroup>
<Target>
<Exec Command="isql -E -n -b -d DBName -i %(StoredProcScripts.Identity)" Condition="'%(StoredProcScripts.Identity)' != ''"/>
</Target>
关于c# - 带有数据库和 ADO.NET Entity Framework 的 .NET TDD - 集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3033375/