c# - TransactionScope 回滚可以与 Selenium 或 Watin 一起使用吗?

标签 c# asp.net selenium xunit.net

我正在尝试对我的 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"));
}

最佳答案

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

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

关于c# - TransactionScope 回滚可以与 Selenium 或 Watin 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1004292/

相关文章:

java - 无法使用 chrome 和 gecko 驱动程序执行 selenium java 程序

ruby-on-rails - Selenium /水 : 'InvalidCookieDomain' error when trying to add cookie

c# - 在 C# 中,如何在接口(interface)中声明 EventHandler 的子类?

c# - 在 ASP.NET Web API2 webservice 中实现 OAuth 访问 token

多种类型的 C# XML 列表

asp.net - 在 Web.Config 中添加 HtmlHelper NameSpace 不起作用

asp.net - 自上一步以来进程或线程已更改

java - SSLContext 的 Selenium NoClassDefFoundError

c# - LogicalTreeHelper.GetChildren - ObservableCollection Move() 导致 DataTemplate 中的 ContentControl 丢失其内容?

c# - 使用@符号时如何在字符串中使用双引号?