標籤:
通用的樣本說明:
- 本系列部落格只討論工具的基礎,不討論任何語言。
- IDE預設指代的是Visual Studio 2013 Community Edition。 本系列文章的結尾,你可以熟練地使用它寫程式。
- 將Visual Studio啟動後的預設布局狀態稱為主視窗,主視窗標題列中顯示的項目名稱不必要。
- 在日常口語和Windows資源管理員的基礎上定義了幾個描述菜單操作的符號:[]、{}、/、>>、=、(,)。
- 檢查一個設定項的表示方法為:
- [視窗名稱]/{菜單名稱}/{子功能表名稱}/{設定項項名稱}=設定項的值
- 例如預設的Debug配置:
- 檢查多個設定項時,按照單個設定項的方式,逐一寫出
- 檢查一個設定項有多個值的時候,用括弧包括並用內部的逗號分隔,如:
- [方案總管]/{項目名稱}/{引用}=(System,System.Core,System.Data,System.Xml)
- 執行一個左鍵單擊序列,就是將最後的檢查項換成”/”,例如退出IDE:
- 右鍵菜單的串連符號為>>,例如重新整理Windows案頭:
- 快顯視窗中的設定項的表示與上類似
- MDI子視窗中設定項的表示與上類似,注意到在Visual Studio中,MDI子視窗的名稱在它的左上方或者可能自動吸附到主視窗的四周
- 標題列和狀態列作為菜單的推廣,適用於上述表示方法
- 缺陷說明
- 歡迎反饋,mailto:[email protected]
- 作者的慣用語言是C#
- 作者是軟狗
- 作者的IDE沒裝中文語言套件,所以有的名詞翻譯得不準確:-(
- 由於還沒有釐清相關的認證問題,著作權保留
- 系列文章沒有提出或解決新的問題,目的只是科普
本文
第一,測試先行
測試先行至少代表了兩個好的實踐:一是在後續的工作中可以專心於編寫程式之上;第二更加深層的理由是介面已經穩定。介面與實現的辯證關係是這樣的,“髒” 代碼總是從介面和實現都不穩定的編程開始的。介面和實現都穩定的肯定不是編程,而是產品。介面穩定而實現不穩定的代碼還有改善的可能,而介面不穩定的代碼基本上難以推進工作。總之,不應該在介面不穩定的情況下開始寫代碼。
原始碼與程式碼片段之間最大的區別在於,原始碼可以在一段時間以內保持穩定,因為原始碼是充分測試過的。一般的樣本只能說明原理,用作程式碼片段,而不能作為原始碼。
測試先行不代表首先建立測試專案。相反,應該先建立項目”項目1”,然後再建立項目”項目1Test”。邏輯上的順序是這樣的:先確定項目的類型,其次確定項目的介面,然後根據介面編寫測試專案的內容,最後進入”編碼——測試”的反覆迴圈,直到寫出了能夠通過測試的代碼。至此又開始另一個”項目X”的工作。
第二,單元測試
單元測試是最簡單而且最有必要的測試。Visual Studio已經整合了很好的單元測試實踐,讓我們開始吧:-)
[主視窗]/{檔案}/{建立}/{項目}/
[建立項目]/{單元測試項目}/
[建立項目]/解決方案=添加到當前解決方案
[建立項目]/OK/
這樣,我們的解決方案當中有了一個新的測試專案。可以發現測試專案的引用非常簡單。在引用處添加對需要測試的項目的引用,就可以開始編寫測試函數了。
運行測試專案的方法是:
[主視窗]/{測試}/{運行}/{所有測試}/
這會彈出測試資源管理員,告訴使用者在測試函數執行過程中出現的問題。值得注意的是,自始至終,不推薦為每一個測試單獨再編寫main()方法,因為main()方法對應的控制台應用程式是一個系統的前端。當然,編寫專門的控制台應用程式來進行全部測試也是不錯的。
第三,測試和調試的區別
最直觀的區別在於,調試就是檢查斷點處的狀態是否符合預期,測試就是看整體上的行為是否符合預期。調試的目的是確保正確的實現,著重介面的內部實現,通常不需要藉助專門的外部代碼。測試的目的是要集中精力去實現,著重介面的外部行為,要藉助專門的外部代碼。有的測試還需要藉助外部的測試集(可以理解成一個txt檔案)來進行。
第四,測試的代碼品質
測試還有一個可愛的好處是,測試代碼的要求沒有正式代碼那麼苛刻:-)。通常可以借用一些教科書或者官方的範例程式碼。
第五,編程中精力的分配
測試的智慧在於集中。測試從工序上說,是先用一小段時間確定了測試方法,然後用一大段時間去編寫實際工作的代碼。它避免了開發人員同時寫業務代碼和驗證代碼的尷尬。因此,可以說測試的好處在於讓開發人員將精力集中到實現上去。
不僅如此,測試確保了整個開發工作圍繞介面來進行,有利於複用和升級。
總結
使用Visual Studio完成的測試只能作為使用者瞭解軟體工程的一個開始,但是”在一段時間以內專註地進行編程”而不是寫一大堆難以控制的main方法這個方法論是值得保持的。
單元測試--llorch的Visual Studio 基礎工具教程(二)