模擬物件測試技術Mock(一)

2022-03-20 23:13:29 字數 2085 閱讀 3062

因為目前專案時間比較緊(乙個月的開發周期),並且,工作流的測試步驟也比較多,所以,我決定採用一種模擬物件測試技術:mock。mock可以為介面生成模擬物件,從而在我們寫實現**之前就檢查其邏輯和互動行為是否正確。我們選用的mock框架是moq 3,基於lambda語法的一款非常簡單的mock框架。

1iemployee.cs

2namespace

thoth.featureproject37

string

name 

8int

age 9}

10}1iseat.cs

2namespace

thoth.featureproject38

}1maintest.cs23

using

moq;

4using

nunit.framework;

5using

thoth.featureproject;67

namespace

thoth.moqproject836

}37}38

上面的測試全部通過。1//

建立乙個mock物件(泛型)

2var employee 

=new

mock

<

iemployee

>

();34//

為此mock物件的乙個屬性(這行是針對identifier)值(setupget是為介面的property設定值,值在return()方法中)

5employee.setupget(p 

=>

p.identifier).returns(1);

67//取出mock物件的值,檢查是否正確

8assert.areequal(

"justina chen

", employee.object.name);910

//為mock物件的方法設定乙個引數及返回物件(setup針對的是方法),returns是返回物件,get(1)中值為1的引數

11seat.setup(p 

=>

p.get(

1)).returns(employee.object);

1213

//這兩行檢查我們返回結果是否正確

14var seatreturned 

=seat.object.get(1);

15assert.areequal(

"justina chen

", seatreturned.name);

1617

//這行是指任何int引數都返回此物件

18seat.setup(p 

=>

p.get(it.isany

<

int>

())).returns(employee.object);

1920

//這裡指定了乙個篩選條件

21seat.setup(p 

=>

p.get(it.is

<

int>

(id 

=>

id >0&&

id <

6))).returns(employee.object);1//

那麼,下面的測試結果是?

2var seatiii 

=new

mock

<

iseat

>

();3

seatiii.setup(p 

=>

p.get(

1)).returns(employee.object);

4var seatobject 

=seatiii.object.get(0);

5assert.areequal(

"justina chen

", seatobject.name);

seatobject.name將報出nullrefenrenceexception,因為我們setup的是1,而希望獲取的物件是0,所以,檢索為空 :-)

我們專案中目前運用到的mock技術差不多就是這樣了,希望能減輕大家跑流程的步驟 :-d 隨著使用的深入,會繼續與大家分享。

模擬物件(一)

互動測試用來測試乙個物件如何向另乙個物件傳遞訊息,或者如何從其他物件接收訊息,即測試物件如何與其他物件進行互動。模擬物件是系統中的乙個偽物件,用來決定乙個單元測試是通過還是失敗。它通過驗證被測物件和偽物件之間是否進行預期的互動來判斷。通常每個測試只有乙個偽物件。樁物件和模擬物件的區別 使用樁物件時,...

模擬物件(二)

本文演示同時使用樁物件和模擬物件。當檔名太短時,loganalyzer傳送錯誤訊息給web伺服器。web伺服器出錯時,傳送郵件給管理員。有上述業務可知,loganalyzer有兩個外部依賴 web服務和郵件服務。現在測試loganalyzer在web服務丟擲異常時正確呼叫了郵件服務。樁物件 使web...

Mock測試技術

在軟體測試過程中,對於一些不容易構造 獲取的物件,用乙個虛擬的物件來替代它,以達到相同的效果,這個虛擬的物件就是mock。在前後端分離專案中,當後端工程師還沒有完成介面開發的時候,前端開發工程師利用mock技術,自己用mock技術先呼叫乙個虛擬的介面,模擬介面返回的資料,來完成前端頁面的開發。其實,...