2011-06-01 29 views
0

我开发的ASP.NET应用程序(在ASP.NET 2.0上)通常已由数据库支持;服务器上绝大多数.NET代码会以DataSetSqlDataReader的形式加载数据,并将其用于数据绑定,如DataGrid。有意义的逻辑或者依赖于数据库或者依赖于用户界面。如何在数据库支持的ASP.NET应用程序中执行单元测试(也是UI测试)

在这种情况下,我应该如何实现由持续集成服务器(可能是CruiseControl.NET)运行的单元测试?我应该为它设置一个测试数据库连接来测试CRUD操作和更复杂的SPROC,还是应该在.NET代码中包含更多逻辑,而不是SPROC中包含更多逻辑?当数据库中有应用程序期望找到的结构时(例如我为CMS编写的某个用户表),这变得更加复杂。

此外,有什么最好的方法来做单元测试的用户界面?我找到了NUnitASP,现在放弃了,但提到了SeleniumWatir

回答

1

看看MVP模式(Model View Presenter)。这应该允许您隔离系统的行为,并且单元对它进行正确测试。

此外,考虑切换到MVC(我会与Fubu通过ASP.NET MVC)。这将允许您测试控制器,并拥有更多类似轨道的体验。

为了实现自动化,我使用WatiN(比如watir,但是.NET)。最重要的是,我使用StoryTeller(谷歌的“StoryTeller Jeremy Miller”)以更具人性化的可读方式展示正在发生的事情,并提供QA使用的模板。

我强烈建议不要使用sprocs中的任何业务逻辑。远离他们。查看存储库模式以抽象获取和设置数据。

希望这能让你开始。

+0

如果业务逻辑做了很多数据过滤,该怎么办? .NET代码在查询中总是比SQL慢。 – 2011-06-01 01:13:28

+0

然后你正在看rhino etl。我不会跟ssis一样,因为它是不可维护的。 – 2011-06-01 02:19:28