2011-02-16 51 views
3

我知道這個問題以前已經問過,但是現有的SO問題都沒有爲我的具體情況提供一個合適的答案。VB.NET測試框架的小項目?

我是空閒時間主要從事項目的獨立開發人員。到目前爲止,我已經接觸了100個課程,並且我開始意識到測試許多課程正變得艱鉅。特別是當我回去並添加運營商超載爲=,<>,CTypeNot;實施IComparable(Of T),IEquatable(Of T),IEqualityComparer(Of T);並覆蓋基本方法,如EqualsGetHashCode

我現在的測試方法是在一個按鈕背後的虛擬表單上隨機地塗寫一些Debug.Print代碼,運行項目,單擊按鈕,並確保調試窗口具有我的期望值。但這既乏味又開始變得浪費時間。

我知道我需要需要是爲每一個班級起草一組專門針對該班級的測試來測試其功能。所以我去看看像NUnit,Gallio/MbUnit等測試框架,但我真的沒有看到它們的價值。到目前爲止,我似乎可以爲每個實現的類編寫一個專門的測試類,並將其包裝在#If DEBUG/#End If塊中,並將這些類鏈接到大型表單上的一組按鈕以運行我的測試。

但是,這可能需要幾周,以我目前的速度。所以我問他們如何看待這樣的問題。我最好搞清楚如何將這些開源測試框架之一集成到我的項目中?或者我應該寫一堆測試類並在某處輸出他們的數據?

我使用VB Express 2010和VS 2010,這取決於我在哪臺電腦上,所以我需要能夠在兩者中進行測試。我不打算很快將項目轉換爲C#,所以我會很感激與VB.NET兼容的答案。

謝謝!

回答

1

既然你沒有舉例說明你的測試看起來如何,我假設你的測試是設計合同風格,在DEBUG構建中執行某些功能時檢查參數和(中間)結果。這是一個完美的解決方案,確保在執行特定任務時沒有錯誤的結果。

在實現新功能時,調試輸出很有價值。

您目前的解決方案的缺點是,如果功能是執行只有驗證錯誤,並且手動驗證調試輸出。您必須手動觸發每個功能,以確保程序仍按預期工作。

因爲當你實現或擴展一些功能「A」,但如果您更改功能「B」不應與「A」代碼的測試過程,通常只執行。通常「A」和「B」間接相關,而執行「B」將打破「A」。這被稱爲迴歸錯誤。

隨着NUnit的和類似的系統,你可以確保如果你運行你的測試套件中的所有功能進行測試。

但是,使用NUnit編寫和維護單元,集成和端到端測試要比應用DesignByContract測試或ManualVerifyDebugOutput測試困難得多。另一方面,當使用單元測試進行測試驅動開發時,您會爲應用程序獲得額外的體系結構優勢。

+0

我不能舉一個例子,因爲我還沒有寫測試單元。我只是坐着,盯着我的代碼,想知道最嚴格的測試方法是什麼(在看過上述測試框架的幾個教程之後)。我的很多代碼只是直接的字符串解析。每個類處理一個特定的字符串,將字符串的元素解析爲內部變量,並在調用類的ToString方法時將它們吐出。所以我的測試單位很大程度上需要檢查輸入和輸出解析。 – Kumba 2011-02-19 00:38:31