【问题标题】:Can TransactionScope rollback be used with Selenium or Watin?TransactionScope 回滚可以与 Selenium 或 Watin 一起使用吗?
【发布时间】:2009-06-16 22:42:28
【问题描述】:

我正在尝试对我的 ASP.NET 应用程序进行一些自动化 Web 测试。我希望使用 Xunit.net 扩展中的 AutoRollback 属性来撤消测试期间所做的任何数据库更改。 AutoRollback 使用 TransactionScope 在测试之前启动事务并在之后回滚。

当我尝试在事务期间访问我的 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"));
}

【问题讨论】:

    标签: c# asp.net selenium xunit.net


    【解决方案1】:

    您的 ASP.NET 应用程序有一个单独的数据库上下文,它不知道您希望它加入由 Xunit.net 启动的事务。显然,数据库在事务开始时锁定了一些资源; web应用耐心等待一段时间,最终放弃。

    我认为您最好的选择是从空数据库开始并使用 SQL 脚本创建模式并填充查找表(您的数据库是 under source control,对吗?)。另一种方法是在运行测试之前备份数据库,然后在测试完成后恢复它。

    【讨论】:

    • 你知道,既然你这么说,这似乎很明显:) 我一直希望避免建立和拆除数据库,但我想我还是坚持下去了。跨度>
    • 您需要找到一种方法在 LINQ to SQL 中启用事务支持,以便它可以加入现有的事务范围。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 2012-10-23
    相关资源
    最近更新 更多