C NUnit單元測試

2022-04-29 13:42:13 字數 3006 閱讀 5249

單元測試(unit test)的乙個測試用例(test case)是一小段**,用於測試乙個小的程式功能的行為是否正常,保證開發的功能子項能正確完成並實現其基本功能。乙個單元測試是用於判斷某個特定條件下某個特定函式的行為。單元測試是隨功能**一起的乙個配套工具,再配合面向介面程式設計方法mock技術,大大提高**的可測試性。

1. nunit是什麼

nunit 免費開源 (提供一套單元測試框架(專用於.net的白盒測試架構)和乙個測試執行程式(test runner)。其中,test tunner 用於尋找具有[testfixture]屬性的類和類中的[test]方法。 

2. tdd思想

在功能**未完成前,先進行測試**的編寫;測試不應著眼於功能**,應著眼於設計。定義tdd的2個原則:

3. 使用nunit

測試原則

nunit屬性

所有nunit屬性都包含在 nunit.framework 命名空間裡,同時必須引用程式集 nunit.framework.dll。在專案測試時,有時要用到資料庫鏈結,一般將資料庫鏈結串放到web.config配置檔案裡,再通過

獲取,但是在測試中是讀不到這個值的,測試時要把鏈結寫成固定字串。

testfixture:修飾測試類。類必須為public且必須有乙個預設建構函式。

test:修飾測試方法。測試方法的返回值必須為void。

testcase:修飾測試方法。標記方法具有引數並提供測試時需要的引數,例:[testcase(引數列表)]

values:標記作為測試方法的一系列的引數。

combinatorial:測試時需要測試的各種可能的組合; [test, combinatorial]

public void testfunction01( [values(1,2,3)]int val, [values(「you」,」hi」)]string str ) {}

setup/teardown

修飾方法,測試類初始化/資源釋放函式。每個測試方法被呼叫之前/後執行,用於環境的建立/清理、初始化/釋放資源。屬性從任何的基類繼承而來,被修飾的方法必須為public。

[testfixturesetup/testfixtureteardown]

onetimesetup/onetimeteardown

修飾方法,測試用例初始化/資源釋放函式。任何測試方法被呼叫之前/後執行,類似構造/析構函式,其作用於整個[testfixture]類,包括資料庫連線等,被修飾的方法必須為public。

setup/teardown方法提供達到測試隔離性的目的:setup確保共享的資源在每個測試執行前正確初始化,teardown確保沒有因執行測試產生的遺留***;testfixturesetup/testfixtureteardown同樣提供相同的目的,但是卻在setup/teardown方法之前/後。

ignore:修飾類或方法,保證測試正常進行的前提下,臨時動態忽略某些測試方法。 [ignore(「提示資訊」)]

category:修飾類或方法,分類/分組管理測試類或方法; [category(標籤)]

nunit方法

在nunit中,assert(斷言)是乙個類,斷言是assert類的靜態方法。斷言是單元測試的核心,用類中的各種方法進行比較,也可以在nunit的斷言中新增自己的錯誤資訊。注意以下幾個方法:

assert.fail():讓測試直接失敗;

assert.ignore():讓測試被忽略;

assert.areequal/arenotequal (object expected, object actual): 比較引數expected和actual的值(型別)是否相等;

assert.istrue/isfalse (bool condition): 條件斷言測試;

assert.aresame/arenotsame (object expected, object actual): 比較兩個引數是否引用同乙個物件;

另外,還有stringassert類,字串斷言,提供對字串值的測試方法。

如果乙個方法中有多個斷言,某個斷言執行失敗,在其之後的所有斷言都不會執行。具體的,nunit~assert類。

nunit ~ 測試集管理

nunit的很多功能是通過屬性來實現,屬性是在.net元件檔案的metadata中新增的一些可以被其他元件讀取的資訊,用中括號標識。nunit根據測試元件的命名空間及[testfixture]和[test]屬性來分類不同的測試。

nunit ~ demo

[testfixture]

public class testfunction

[onetimeteardown]

public void testfixtureteardown()

[setup]

public void setup()

[teardown]

public void teardown()

[test]

public void testmethod01()

[test]

public void testmethod02()

}

測試幾個方法的執行順序:

onetimesetup -> setup -> testmethod01 -> teardown -> setup -> testmethod02 -> teardown -> onetimeteardown

此處可以結合不足之處的第2點理解。

nunit ~ 單步除錯

不足之處

[1]. 單元測試之道(使用nunit)

[2]. 用nunit在單元測試中實現建構函式依賴注入

[3]. nunit單元測試教程以及mock測試

C NUnit單元測試

0.單元測試 單元測試 unit test 的乙個測試用例 test case 是一小段 用於測試乙個小的程式功能的行為是否正常,保證開發的功能子項能正確完成並實現其基本功能。乙個單元測試是用於判斷某個特定條件下某個特定函式的行為。單元測試是隨功能 一起的乙個配套工具,再配合面向介面程式設計方法和m...

單元測試 單元測試文章收藏

前言 前段時間公司計畫做自動化測試,自己也打算圍繞幾個點做相關調研,現在想想呢?其實對自動化測試的概念都還不是十分清晰,當時主要還是圍繞 單元測試 向qa小夥伴學習了一段時間,現由於公司重組,學習中斷,這裡簡單記錄一些單元測試好文,留待後續參考.什麼叫自動化測試?自動化測試覆蓋率?覆蓋率如何做到的?...

單元測試之Django單元測試

每個應用,自帶tests.py 整合在django的專案檔案裡,更多是開發人員寫django自動的測試執行 3.1 前後置方法執行特點 django.test.testcase類主要由前 後置處理方法和test開頭的方法組成 特點 繼承於django.test.testcase 測試用例都是test...