單元測試跟軟體設計一樣,有一些常用的模式,這篇文章1、準備,執行,斷言(arrange, act, assert)。這種模式是非常常見的,套用這種模式進行單元測試通常的做法如下:
1)準備測試環境,測試資料等
2)執行被測試方法
3)用斷言來驗證執行結果
下面是一段測試**,被測方法的功能是把字串中每個單詞的首字母轉為大寫,特殊字元用下劃線替代。
[testmethod()]
public void capitalizetest()
2、建構函式測試。這種模式適合對類中某些特殊的屬性進行測試,被測的屬性都有乙個特點–它們都是不變數;例如陣列的初始化以後,其容量是不會變化的,無論這個陣列物件被什麼樣的外部方法呼叫。一般的做法如下:
1)建立乙個例項
2)對該例項進行外部呼叫
3)用斷言來驗證執行結果
下面是一段**;首先建立乙個陣列,然後使用該陣列,最後驗證該陣列的大小有沒有變化。
[testmethod]
public void testinvariant()
//驗證結果
assert.areequal(capacity, intarray.length);
}
3、反向關聯(roundtrip)。這種模式適合於被測方法有乙個可逆方法的情況下使用。它的數學證明是:f-1(f(x)) = x
下面是一段示例**:
[testmethod]
public void roundtriptest()
4、經過處理的反向關聯(sanitized roundtrip)。上面說的反向關聯有乙個缺點,就是如果輸入的字串為」 10″,那麼就有點問題了,因為整數10轉換為字串是不會轉換為」 10″的,這個模式的數學證明是:f-1(f(f-1(x)))=f-1(x)
以下示例可以看做是上一段**的加強版。
[testmethod]
public void sanitizedroundtriptest()
5、狀態關聯。這種模式很常見,就是對於呼叫某個類的方法,會改變這個類內部的狀態,而這個改變可以用其他方法來間接地驗證。
一段對列表進行簡單測試的**:
[testmethod]
public void insertcontains()
6、異常允許。如果需要測試異常是否在適當的時候丟擲的時候,應該應用該模式。
[testmethod,expectedexception(typeof(indexoutofrangeexception))]
public void expectedexception()
以上六種模式是單元測試中比較常見的,但並不是單元測試的全部。了解這些模式,對於平時的工作是很有幫助的。
**:
單元測試中的模式
對於mock object使用工廠模式。但如果有spring支援,可以實現mock物件的非侵入式替換,這個更方便 我們可以考慮採用chain of responsibility 模式將不同的認證邏輯封裝到不同的requesthandler 中,並通過編碼或者根據配置,將所有的handler 串聯成r...
單元測試 單元測試文章收藏
前言 前段時間公司計畫做自動化測試,自己也打算圍繞幾個點做相關調研,現在想想呢?其實對自動化測試的概念都還不是十分清晰,當時主要還是圍繞 單元測試 向qa小夥伴學習了一段時間,現由於公司重組,學習中斷,這裡簡單記錄一些單元測試好文,留待後續參考.什麼叫自動化測試?自動化測試覆蓋率?覆蓋率如何做到的?...
單元測試之Django單元測試
每個應用,自帶tests.py 整合在django的專案檔案裡,更多是開發人員寫django自動的測試執行 3.1 前後置方法執行特點 django.test.testcase類主要由前 後置處理方法和test開頭的方法組成 特點 繼承於django.test.testcase 測試用例都是test...