單元測試NUnit教程

2021-07-09 22:38:21 字數 2375 閱讀 8680

測試**必須做以下幾件事情:

準備測試所需的條件

呼叫要測試的方法

驗證被測方法的行為和期望的行為是否一致

完成後清理各種資源

為了使用nunit框架,需要做這些工作:

1.使用using宣告引用必要的nunit類(並新增乙個指向nunitdll的引用)

2.定義乙個測試類,必須是public的、包換乙個public的沒有引數的建構函式,並且在類定義上加上[testfixture]attribute標記

3.在測試類中包含用[test]attribute標記的方法。

特性

在使用nunit框架時,除了上面提到的[testfixture]和[test]特性外,還有一些有用的特性。靈活使用這些特性,將有助於提高測試**開發的效率。

1. per-method的setup和teardown

[setup]:用此attribute指定的方法用於環境的建立,nunit在呼叫每個[test]方法之前,將呼叫此特性標記的方法

[teardown]:和[setup]一樣,只是呼叫的時機是在每個[test]方法完成後,用於環境的清理。

2. per-class setup和per-class teardown

[testfixturesetup]以及[testfixtureteardown]特性和上述的[setup]以及[teardown]類似,只是其作用於整個[testfixture]類而已。可以使用這兩個特性標記的方法對整個test

class設定和清理環境。

3. 使用categories分類

[category(「分類名」)]用於指定某個測試方法所屬的「型別」。用此特性將各個測試方法分類後,可以在nunit環境中指定需要執行的型別。

可以將此特性寫在[test]特性一起,如:

[test, category(「test_0001」)]

也可以分開兩行:

[test]

[category(「test_0001」)]

category還有乙個explicit屬性,可以顯式排除該category的執行(除非在nunit gui中指定),寫法如下:

[category(「test_0001」, explicit=true)]

4.測試預期的異常:expectedexception

對測試而言有兩種異常:從測試**丟擲的異常;由於某個模組錯誤而引發的異常.

第二種異常會在nunit中捕獲並作測試失敗處理。而有時我們需要測試被測試方法是否丟擲了期望的異常(例如,特意傳入的錯誤引數),就可以用以下方法。

[expectedexception(typeof(someexception))]或:[test,expectedexception(typeof(someexception))]

注意,一旦期望的異常丟擲了,剩餘的**就會被跳過。

5.臨時忽略一些測試:ignore

當你寫了一些測試**,但並不打算馬上執行時,可以使用ignore特性。

[test,ignore(「message」)]

這個測試將被跳過,並且在nunit gui中給出黃色的狀態列。

技巧

有六個值得測試的具體部位,它們能夠提高你的測試水平。這六個方面可以統稱為right_bicep:

right : 結果是否正確(right)

對於測試而言,首要的也是最明顯的任務就是檢視所期望的結果是否正確-驗證結果。

這裡的結果是指確認**所做的和你的期望是一致的。

b: 邊界(boundary)條件是否正確

邊界條件包括許多內容,將在下一節(2.3.邊界條件)中集中描述。

i : 是否可以檢查反向(inverse)關聯

對一些方法,可以用反向的邏輯關係來驗證它們。例如,為了檢查某條記錄是否成功的插入了資料庫

,可以通過查詢這條記錄來驗證,等等。

值得注意的是,當同時編寫原方法和它的反向測試時,一些bug可能會被兩者中都有的錯誤所掩飾。在可能的情況下,應該用不同的原理來實現反向測試。

c: 是否可以使用其它方法來跨檢查(cross-check)結果

e: 錯誤條件(error condition)是否可以重現

應該能夠通過強制引發真實世界中的錯誤-網路斷開、程式崩潰等-來測試**如何處理這些問題。簡單的無效引數之類的錯誤會很簡單,但要模擬複雜的錯誤就需要一些特殊的技術

。在下面的文字中,將討論使用mock技術來解決如何強制產生錯誤的問題。

p: 效能(performance)方面是否滿足條件

這裡的效能特徵並不是指程式的效能本身,而是指效能的那種「隨著規模增大,問題越來越複雜」的趨勢。我們應該使用乙個效能特性的快速回歸測試,避免出現某些修改使得程式變得很慢卻無法對其進行定位的情況。

單元測試 NUnit

本內容摘自 單元測試之道c 版 使用nunit 編寫目的 供日後參考學習,好記心不如爛筆頭。基本語法 1 單元測試 斷言 assert 方法 areequals assert.areequals expected,actual string message 這是使用最多的斷言形式,expected ...

單元測試NUnit

在vs中新建的專案中加入nunit.framework的引用。或許我們可以這麼做測試,但顯然不專業。我們新建乙個類叫calculatortest,雖然名字可以隨意起,但是最好這麼叫,比較明顯。注意,這裡的測試方法必須是public void,且沒有引數的,方法名字可以隨意取。而且注意這裡判斷採用的a...

單元測試之NUnit

綠色 描述執行的測試通過。黃色 執行的某些測試忽略,但沒有失敗。紅色 測試失敗。testfixture 放在類前,標識類為測試類。test 放在測試類的方法前,標識該方法為可測試的方法。1 該方法必須沒有引數。2 該方法為public型別。3 該方法沒有返回值。setup 每個測試方法執行前,執行該...