从UI到DB - 使用Selenium和NUnit集成测试(Integration testing

2019-10-17 16:02发布

我有尝试创建使用Selenium和NUnit的集成测试的一些问题。

我试图使用Selenium RC在NUnit测试开我的ASP.NET Web应用程序,并想测试真正做到在DB所有的东西,真正的用户会做。 当然这将是很好,如果数据库可以得到回滚硒做了之后它的事情,我已经断言,数据库包含有从UI数据的新行(ETC)。

所以,这里的设置,我有(在某种伪代码):

TestMethod()
{
    Using(new TransActionScope)
    {
        Selenium.StartSelenium()
        Selenium.SelectAndClickAndDoStuffInUI()
        AssertSomething()
    }
}

现在,SelectAndClickAndDoStuffInUI法点击周围的UI,从而触发了我们的专有DA-框架。 我们的框架写的所有东西到数据库,以及AssertSomething法声称,一切都在分贝罚款。 框架使用的交易(“要求”),在它的内部运作。

所以,一切都很好,对不对? 不,可惜不是。 例子中的TransactionScope的上述不应该得到承诺(不txScope.Complete() - 调用那里),因此,所有的内部事务应该得到回滚过,对吧? 那么,他们不这样做,一切硒不通过用户界面被提交到数据库。

我真的试图了解这个地方出了问题,但到目前为止还没有找到答案。

感谢您的阅读,和(最后)这里的实际问题:

为什么的TransactionScope没有得到在我的例子所示的情况下回滚?

我会很乐意提供有关情况和设置的其它信息!

Answer 1:

您正在使用的用户界面到ASP应用程序。 这意味着你的测试无法回滚所做的更改。

交易范围只能在自己的进程运行。 是怎样的事务管理器能够撤消webinterface内的点击? 它可能在任何地方。 硒只是远程控制的浏览器。

您应该创建“真正”的单元测试与模拟对象,而不是在所有访问数据库。 它有点难以用普通的ASP页面,但你不能看看asp.MVC找到一个可能的解决这个问题。



文章来源: Integration testing using Selenium and NUnit - From UI to DB