如何在数据库支持的ASP.NET应用程序中实现单元测试也是UI测试

问题描述

|| 我(在ASP.NET 2.0上)开发的ASP.NET应用程序通常已由数据库支持。服务器上的大多数.NET代码都以
DataSet
sqlDataReader
的形式加载数据,并使用其对
DataGrid
之类的数据进行绑定。有意义的逻辑取决于数据库或取决于用户界面。 在这种情况下,我应该如何实现将由连续集成服务器(可能是CruiseControl.NET)运行的单元测试?我应该建立一个测试数据库连接以用于测试CRUD操作和更复杂的SPROC,还是应该在.NET代码而不是SPROC中包含更多的逻辑?当应用程序希望在数据库中找到某种结构时(例如我正在为CMS写的Users表中的Users表),这将变得更加复杂。 另外,对用户界面进行单元测试的最佳方法是什么?我找到了NUnitASP,现在已经废弃了,但是提到了Selenium和Watir。     

解决方法

        看一下MVP模式(模型视图演示器)。这应该使您能够隔离系统的行为并对其进行正确的单元测试。 另外,考虑切换到MVC(我会通过ASP.NET MVC与Fubu一起使用)。这将使您能够测试控制器并获得更类似于Rails的体验。 为了自动化,我使用WatiN(就像watir一样,但是用于.NET)。在此之上,我使用StoryTeller(Google \“ StoryTeller Jeremy Miller \”)以更易于理解的方式呈现正在发生的事情,并提供供质量检查使用的模板。 我强烈建议不要在存储过程中使用任何业务逻辑。远离他们。查看存储库模式以抽象化获取和设置数据。 希望这可以帮助您入门。