深入一门语言去编程
现在重新审视Web Form的架构,感触颇多。Rick Strahl 2007年的一篇文章已近谈到了很多分层和单元测试的问题:What's Ailing ASP.NET Web Forms 看来,要解决这些问题,就是需要深入一门语言去编程了。
DNN单元测试
目前DNN的业务逻辑层和DAL层都无法进行单元测试。
- 给DNN 项目增加Service层,把业务逻辑放入其中,这样就可以对其进行单元测试,当然,架构也更明确了。
- 对于DAL层,有一篇文章介绍了一个单元测试框架,不过目前无法使用了:Unit Testing a DotNetNuke Private Assembly Module
现在的问题是,Web Form使用的事件响应机制使业务逻辑代码和UI操作代码很难分开。Web Form使用partial 的类把一个UI的页面分成三份: xxx.aspx; xxx.aspx.cs; xxx.aspx.design,因为是partial的类,所以这三个部分中的变量都是可以在任何一个部分中直接访问的,这带来的一个问题就是在aspx.cs文件中对事件响应的代码中,因为可以直接访问aspx.design页面中全局控件变量,比如textField, dropdownList之类的东西,事件响应代码变得跟UI紧耦合,从而无法进行单元测试。对上面的这些问题,这篇文章有一定的价值:Testing ASP.NET WebForms
学习计划:
- 研究DNN官方项目的单元测试方法
- 研究使用MSBuilder打包模块的方法
To Do:
可测试的DNN模块-- 如何创建可测试的DNN模块
可测试的DNN模块--如何创建测试项目