Object C單元測試 MOCK(摘錄精選)

2022-09-07 14:36:16 字數 3003 閱讀 2172

斷言測試型別:

下面一共18個斷言(sdk中也是18個,其含義**ios unittest 學習筆記,真心佩服原文的博主):

xctfail(format…) 生成乙個失敗的測試; 

xctassertnil(a1, format...)為空判斷,a1為空時通過,反之不通過; 

xctassertnotnil(a1, format…)不為空判斷,a1不為空時通過,反之不通過;

xctassert(expression, format...)當expression求值為true時通過; 

xctasserttrue(expression, format...)當expression求值為true時通過; 

xctassertfalse(expression, format...)當expression求值為false時通過; 

xctassertequalobjects(a1, a2, format...)判斷相等,[a1 isequal:a2]值為true時通過,其中乙個不為空時,不通過;

xctassertnotequalobjects(a1, a2, format...)判斷不等,[a1 isequal:a2]值為false時通過;

xctassertequal(a1, a2, format...)判斷相等(當a1和a2是 c語言標量、結構體或聯合體時使用,實際測試發現nsstring也可以); 

xctassertnotequal(a1, a2, format...)判斷不等(當a1和a2是 c語言標量、結構體或聯合體時使用);

xctassertequalwithaccuracy(a1, a2, accuracy, format...)判斷相等,(double或float型別)提供乙個誤差範圍,當在誤差範圍(+/-accuracy)以內相等時通過測試; 

xctassertnotequalwithaccuracy(a1, a2, accuracy, format...) 判斷不等,(double或float型別)提供乙個誤差範圍,當在誤差範圍以內不等時通過測試; 

xctassertthrows(expression, format...)異常測試,當expression發生異常時通過;反之不通過;(很**) xctassertthrowsspecific(expression, specificexception, format...) 異常測試,當expression發生specificexception異常時通過;反之發生其他異常或不發生異常均不通過; 

xctassertthrowsspecificnamed(expression, specificexception, exception_name, format...)異常測試,當expression發生具體異常、具體異常名稱的異常時通過測試,反之不通過; 

xctassertnothrow(expression, format…)異常測試,當expression沒有發生異常時通過測試;

xctassertnothrowspecific(expression, specificexception, format...)異常測試,當expression沒有發生具體異常、具體異常名稱的異常時通過測試,反之不通過; 

xctassertnothrowspecificnamed(expression, specificexception, exception_name, format...)異常測試,當expression沒有發生具體異常、具體異常名稱的異常時通過測試,反之不通過。

特別注意下xctassertequalobjects和xctassertequal

xctassertequalobjects(a1, a2, format...)的判斷條件是[a1 isequal:a2]是否返回乙個yes。

xctassertequal(a1, a2, format...)的判斷條件是a1 == a2是否返回乙個yes。

對於後者,如果a1和a2都是基本資料型別變數,那麼只有a1 == a2才會返回yes。例如下面**中只有第二行可以通過測試:

//

1.比較基本資料型別變數

xctassertequal(

1, 2, @"

a1 = a2 shoud be true

"); //

無法通過測試

xctassertequal(1, 1, @"

a1 = a2 shoud be true

"); //

通過測試

如果a1和a2都是指標,那麼只有a1和a2指向同乙個物件才會返回yes。

//比較nsarray物件  

nsarray *array1 = @[@1

];

nsarray *array2 = @[@1

];

nsarray *array3 =array1;

xctassertequal(array1, array2,

@"a1 and a2 should point to the same object

"); //

無法通過測試

xctassertequal(array1, array3, @"

a1 and a2 should point to the same object

"); //

通過測試

ocmock

ocmock是乙個用於為ios或mac os x專案配置mock測試的開源專案,如果目標是ios專案那麼生成的是靜態庫,如果是mac os x專案生成的是框架。實現思想就是根據要mock的物件的class來建立乙個對應的物件,並且設定好該物件的屬性和呼叫預定方法後的動作(例如返回乙個值,呼叫**塊,傳送訊息等等),然後將其記錄到乙個陣列中,接下來開發者主動呼叫該方法,最後做乙個verify(驗證),從而判斷該方法是否被呼叫,或者呼叫過程中是否丟擲異常等。

ocmock官網

ios project setup:在ios專案中配置ocmock的教程

erikdoe / ocmock:在github上的示例專案,可以參考下其中的一些配置引數

單元測試之模擬Mock

先看下面一段 public class dataservice idataservice public int getcount 其中有 getcount 方法是為獲取列表的 count,我們為這個方法寫單元測試 getcount 中獲取列表是呼叫了 idatarespository 中的 getl...

golang單元測試之mock

搞單元測試,如果碰到這些情況 1,乙個函式,內部包含了很多並且很深的呼叫,但是如果單單測這個函式,其實實現的功能很簡單。2,乙個函式,包含了其他還未實現的呼叫。3,函式內部對資料的要求極為苛刻。那麼這時候就可以考慮使用mock來處理。mock,簡而言之就是可以通過注入我們所期望返回的資料,或者我們所...

單元測試Mockito中的Mock和Spy

專案中,有些函式需要處理某個服務的返回結果,而在對函式單元測試的時候,又不能啟動那些服務,這裡就可以利用mockito工具。mockito中的mock和spy都可用於攔截那些尚未實現或不期望被真實呼叫的物件和方法,並為其設定自定義行為。二者的區別在於 1 mock宣告的物件,對函式的呼叫均執行moc...