Jas*_*ans 3 .net database unit-testing transactions
我已经开始使用TransactionScope来帮助我进行单元测试,以便将我的测试数据库恢复到之前的状态.使用这个与SpecFlow,我有一个像这样的基类:
public class TransactionScopedFeature
{
private TransactionScope Scope { get; set; }
[BeforeScenario]
public void BaseSetup()
{
this.Scope = new TransactionScope(TransactionScopeOption.RequiresNew);
}
[AfterScenario]
public void BaseCleanup()
{
if (this.Scope != null)
{
this.Scope.Dispose();
}
}
}
Run Code Online (Sandbox Code Playgroud)
所有上述工作,当我向数据库添加记录时,当我在测试完成后查询表时,这些表是空的.伟大的东西,非常聪明!
我的问题与这些表中的标识列有关.我注意到的是,当我多次运行我的测试时,我的测试表的ID列增加1.我假设由于TransactionScope将回滚更改,因此身份种子也将被回滚.
我做错了这个假设 - 这就是数据库的工作原理吗?如果是这种情况,我也可以在每个执行此操作的方案之前运行SQL脚本:
DBCC CHECKIDENT ('dbo.Items', reseed, 0)
我只是想检查一下我做错了什么,或者这是正常的数据库行为.
干杯.雅.