2009-06-16 58 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

相关问题