深入一門語言去程式設計
現在重新審視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子產品--如何建立測試項目