我在尝试使用 Selenium 和 NUnit 创建集成测试时遇到了一些问题。
我正在尝试在 NUnit 测试中使用 Selenium RC 来驱动我的 ASP.NET Web 应用程序,并希望测试能够真正完成真正用户会在 DB 中执行的所有操作。当然,如果数据库可以在 Selenium 完成它之后回滚,那将是很好的,并且我断言 db 包含来自 ui 的数据的新行(等)。
所以,这是我的设置(在某种伪代码中):
TestMethod()
{
Using(new TransActionScope)
{
Selenium.StartSelenium()
Selenium.SelectAndClickAndDoStuffInUI()
AssertSomething()
}
}
现在,SelectAndClickAndDoStuffInUI 方法在 UI 中单击,从而启动了我们专有的 da 框架。我们的框架将所有内容写入 db,AssertSomething 方法断言 db 中的一切都很好。框架在其内部工作中使用事务(“必需”)。
所以一切都很好,对吧?不,很遗憾没有。上面示例中的 TransActionScope 不应该被提交(那里没有 txScope.Complete()-call),因此所有内部事务也应该回滚,对吧?好吧,他们没有,而且 Selenium 通过 UI 所做的一切都会提交给 DB。
我真的试图了解哪里出了问题,但到目前为止还没有找到答案。
感谢阅读,(最后)这是实际问题:
为什么在我的示例中显示的情况下 TransactionScope 没有回滚?
我很乐意提供有关情况和设置的更多信息!