單元測試(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...