2009-06-16 38 views
6

我正在嘗試對我的ASP.NET應用程序進行一些自動化的Web測試。我希望使用Xunit.net擴展中的AutoRollback屬性來撤銷測試過程中所做的任何數據庫更改。 AutoRollback使用TransactionScope在測試之前啓動事務並在之後回滾。TransactionScope回滾可以與Selenium或Watin一起使用嗎?

當我在事務中嘗試擊中我的web應用程序時,它總是超時。這似乎應該工作,任何想法?下面是我的測試:

[Fact] 
[AutoRollback] 
public void Entity_should_be_in_list() 
{ 
    Entity e = new Entity 
    { 
     Name = "Test", 
    }; 
    dataContext.Entities.InsertOnSubmit(e); 
    dataContext.SubmitChanges(); 

    selenium.Open("http://localhost/MyApp"); 
    Assert.True(selenium.IsTextPresent("Test")); 
} 

回答

5

你的ASP.NET應用程序都有一個單獨的數據庫上下文和它有你想要加入由Xunit.net啓動的事務不知道。顯然,數據庫在事務開始時會鎖定一些資源;網絡應用程序耐心等待一段時間,最終放棄。

我認爲你最好的選擇是從空數據庫開始,並使用SQL腳本創建模式並填充查找表(你的數據庫是under source control,對嗎?)。另一種方法是在運行測試之前備份數據庫,然後在完成後進行恢復。

+0

你知道,這看起來很明顯,現在你說了:)我一直希望避免建立和拆除數據庫,但我想我一直堅持下去。 – 2009-06-17 00:15:11

相關問題