我使用TransactionScope來幫助我的單元測試開始,爲了把我的測試數據庫恢復到之前的狀態。與SpecFlow利用這一點,我有一個基類,像這樣:使用的TransactionScope不補種標識列
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();
}
}
}
以上所有的作品,在那個時候我記錄添加到數據庫中,當我再查詢表測試完成後,這些表是空的。偉大的東西,確實非常聰明!
我的問題涉及到這些表中標識列。我注意到的是,當我多次運行我的測試時,我的測試表的ID列增加1.我認爲由於TransactionScope會回滾這些更改,所以標識種子也會回滾。
我錯在做這樣的假設 - 這是數據庫是如何工作的?如果是這樣的話,我也可以我的每一個場景,做這個之前,運行SQL腳本:
DBCC CHECKIDENT ('dbo.Items', reseed, 0)
我只是想萬一我做錯了什麼檢查,或這是正常的數據庫行爲。
乾杯。 Jas。
回覆也許它只是一個錯字,但單元測試不應該打的數據庫。您可能在談論整合(或端到端)測試。 – 2012-04-11 08:55:51