iOS 開發測試(單元測試 UI測試)

2021-08-17 08:18:50 字數 4198 閱讀 5577

本文只講開發測試內容

加快檢查速度

減少除錯時間

**質量得到保證

測試基本結構(三段式結構 ):1:given 2.when 3.then

given:測試條件

when:呼叫測試方法

then :斷言 xctassertequal(c, 6 )

像 ocmock依賴注入,可以模擬出所需要的條件

下面簡單寫乙個demo

在viewcontroller標頭檔案中宣告暴露測試介面

第乙個是普通方法,第二是網路非同步方法

.m檔案中進行實現

測試步驟遵循三段式結構

常見的大型sdk像afnetworking裡面的測試用例非常多,也都是遵循三段式結構

如:

下面列舉一些斷言的用法

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

// xctassertnil(@"not nil string", @"string must be nil");

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

// xctassertnotnil(@"not nil string", @"string can not be nil");

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

// xctassert((2 > 2), @"expression must be true");

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

// xctasserttrue(1, @"can not be zero");

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

// xctassertfalse((2 < 2), @"expression must be false");

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

// xctassertequalobjects(@"1", @"1", @"[a1 isequal:a2] should return yes");

// xctassertequalobjects(@"1", @"2", @"[a1 isequal:a2] should return yes");

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

// xctassertnotequalobjects(@"1", @"1", @"[a1 isequal:a2] should return no");

// xctassertnotequalobjects(@"1", @"2", @"[a1 isequal:a2] should return no");

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

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

// xctassertequal(1, 2, @"a1 = a2 shoud be true"); // 無法通過測試

// xctassertequal(1, 1, @"a1 = a2 shoud be true"); // 通過測試

// 2.比較nsstring物件

// nsstring *str1 = @"1";

// nsstring *str2 = @"1";

// nsstring *str3 = str1;

// xctassertequal(str1, str2, @"a1 and a2 should point to the same object"); // 通過測試

// xctassertequal(str1, str3, @"a1 and a2 should point to the same object"); // 通過測試

// 3.比較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"); // 通過測試

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

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

// xctassertequalwithaccuracy(1.0f, 1.5f, 0.25f, @"a1 = a2 in accuracy should return yes");

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

// xctassertnotequalwithaccuracy(1.0f, 1.5f, 0.25f, @"a1 = a2 in accuracy should return no");

// 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沒有發生具體異常、具體異常名稱的異常時通過測試,反之不通過

iOS 單元測試

進入測試tab,可以執行工程自帶的測試用例。我們新增乙個自己的測試用例samplecalctests 在生成的samplecalctest.m中新增標頭檔案引用和成員變數 import ios calcviewcontroller.h inte ce samplecalctests xctestca...

iOS 單元測試

新增測試用例步驟及示例 xctest,它是xcode7中內建的測試框架,使用起來非常簡單 1.新建工程的時候新增測試單元 2.單元測試示例 咱們在這假設乙個使用者向主播送禮物場景,根據使用者送的禮物不同消耗的代金幣不同 user 使用者 present 禮物 anchor 主播 present類 p...

iOS 單元測試

import uikit 工具類 classlftools nsobjectelse import xctest testable import learnt 自己新建的測試類需要testable 引入否則無法訪問 class lftoolstest xctestcase 單元測試結束後呼叫 可以進...