iOS 單元測(cè)試-UnitTest

一:在iOS中單元測(cè)試主要使用場(chǎng)景

1还棱、是寫完代碼以后:想要驗(yàn)證一下自己寫的代碼是否有問題撤摸。
2温眉、寫代碼之前:就是寫代碼之前所有的功能分模塊的設(shè)計(jì)好育叁,測(cè)試通過了再寫。(我反正是沒用過)芍殖。
3、修復(fù)某個(gè)bug后:一般修復(fù)完某個(gè)bug谴蔑,為了確保修復(fù)是成功的豌骏,會(huì)寫測(cè)試龟梦。

二:創(chuàng)建具有單元功能的工程

1、如果是新建工程窃躲,直接勾選include Unit Tests就可以了计贰,目前新建項(xiàng)目這個(gè)都是默認(rèn)勾選的。


2蒂窒、如果已有的工程不包含測(cè)試用例可以通過File-->new-->target-->iOS-->iOS Unit Testing Bundle來添加UnitTest躁倒。

三:XCTestCase了解

1、方法作用

   - (void)setUp {
   [super setUp];
  // Put setup code here. This method is called before the invocation of each test method in the class.
  //初始化的代碼洒琢,在測(cè)試方法調(diào)用之前調(diào)用
  }
  - (void)tearDown {
  // Put teardown code here. This method is called after the invocation of each test method in the class.
  // 釋放測(cè)試用例的資源代碼秧秉,這個(gè)方法會(huì)每個(gè)測(cè)試用例執(zhí)行后調(diào)用
  [super tearDown];
  }
  - (void)testExample {
  // This is an example of a functional test case.
  // Use XCTAssert and related functions to verify your tests produce the correct results.
  // 測(cè)試用例的例子,注意測(cè)試用例一定要test開頭
  }
  - (void)testPerformanceExample {
  // This is an example of a performance test case.
  // 測(cè)試性能例子
  [self measureBlock:^{
      // Put the code you want to measure the time of here.
  // 需要測(cè)試性能的代碼
  }];
  }

2衰抑、XCTest常用的斷言及解釋象迎。

XCTFail(format…) 生成一個(gè)失敗的測(cè)試; 
XCTAssertNil(a1, format...)為空判斷呛踊,a1為空時(shí)通過砾淌,反之不通過;
XCTAssertNotNil(a1, format…)不為空判斷谭网,a1不為空時(shí)通過汪厨,反之不通過;
XCTAssert(expression, format...)當(dāng)expression求值為TRUE時(shí)通過愉择;
XCTAssertTrue(expression, format...)當(dāng)expression求值為TRUE時(shí)通過劫乱;
XCTAssertFalse(expression, format...)當(dāng)expression求值為False時(shí)通過;
XCTAssertEqualObjects(a1, a2, format...)判斷相等薄辅,[a1 isEqual:a2]值為TRUE時(shí)通過要拂,其中一個(gè)不為空時(shí),不通過站楚;
XCTAssertNotEqualObjects(a1, a2, format...)判斷不等脱惰,[a1 isEqual:a2]值為False時(shí)通過;
XCTAssertEqual(a1, a2, format...)判斷相等(當(dāng)a1和a2是 C語(yǔ)言標(biāo)量窿春、結(jié)構(gòu)體或聯(lián)合體時(shí)使用, 判斷的是變量的地址拉一,如果地址相同則返回TRUE,否則返回NO)旧乞;
XCTAssertNotEqual(a1, a2, format...)判斷不等(當(dāng)a1和a2是 C語(yǔ)言標(biāo)量抛虏、結(jié)構(gòu)體或聯(lián)合體時(shí)使用)材蛛;
XCTAssertEqualWithAccuracy(a1, a2, accuracy, format...)判斷相等,(double或float類型)提供一個(gè)誤差范圍,當(dāng)在誤差范圍(+/-accuracy)以內(nèi)相等時(shí)通過測(cè)試携兵;
XCTAssertNotEqualWithAccuracy(a1, a2, accuracy, format...) 判斷不等榛泛,(double或float類型)提供一個(gè)誤差范圍,當(dāng)在誤差范圍以內(nèi)不等時(shí)通過測(cè)試;
XCTAssertThrows(expression, format...)異常測(cè)試叉橱,當(dāng)expression發(fā)生異常時(shí)通過;反之不通過者蠕;(很變態(tài)) XCTAssertThrowsSpecific(expression, specificException, format...) 異常測(cè)試窃祝,當(dāng)expression發(fā)生specificException異常時(shí)通過;反之發(fā)生其他異初饴拢或不發(fā)生異常均不通過粪小;
XCTAssertThrowsSpecificNamed(expression, specificException, exception_name, format...)異常測(cè)試,當(dāng)expression發(fā)生具體異常抡句、具體異常名稱的異常時(shí)通過測(cè)試探膊,反之不通過;
XCTAssertNoThrow(expression, format…)異常測(cè)試玉转,當(dāng)expression沒有發(fā)生異常時(shí)通過測(cè)試突想;
XCTAssertNoThrowSpecific(expression, specificException, format...)異常測(cè)試,當(dāng)expression沒有發(fā)生具體異常究抓、具體異常名稱的異常時(shí)通過測(cè)試猾担,反之不通過;
XCTAssertNoThrowSpecificNamed(expression, specificException, exception_name, format...)異常測(cè)試刺下,當(dāng)expression沒有發(fā)生具體異常绑嘹、具體異常名稱的異常時(shí)通過測(cè)試,反之不通過
四:簡(jiǎn)單使用

1.功能邏輯的測(cè)試

  • 在ViewController中寫一個(gè)簡(jiǎn)單的方法
   - (int)testInt;//聲明
   - (int)testInt;//實(shí)現(xiàn)
      {
          return 100;
      }
  • 在測(cè)試的文件中導(dǎo)入ViewController.h橘茉,并且定義一個(gè)vc屬性,然后就可以實(shí)現(xiàn)測(cè)試了


command+u快捷方式運(yùn)行工腋,或者produce-->test都行,工程就跑起來了我們可以在在控制臺(tái)清晰的看到我們要測(cè)試的用例子通過了畅卓,測(cè)試通過的測(cè)試方法會(huì)有綠色的鉤擅腰。

這時(shí)候我們改下斷言,把100隨便改成一個(gè)數(shù)翁潘,120.再comand+u運(yùn)行下趁冈,看下什么情況


提示測(cè)試不通過了,因?yàn)槲覀円獪y(cè)試的方法返回值是90拜马,

2渗勘、代碼性能測(cè)試
比如我們要測(cè)試

NSData *data = UIImagePNGRepresentation([UIImage imageNamed:@"cs"]);
NSData *data = UIImageJPEGRepresentation([UIImage imageNamed:@"cs"],

這二段代碼執(zhí)行的時(shí)間,我們可以在testPerformanceExample方法里測(cè)試俩莽。

end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末旺坠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子扮超,更是在濱河造成了極大的恐慌取刃,老刑警劉巖蹋肮,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異璧疗,居然都是意外死亡括尸,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門病毡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人屁柏,你說我怎么就攤上這事啦膜。” “怎么了淌喻?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵僧家,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我裸删,道長(zhǎng)八拱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任涯塔,我火速辦了婚禮肌稻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘匕荸。我一直安慰自己爹谭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布榛搔。 她就那樣靜靜地躺著诺凡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪践惑。 梳的紋絲不亂的頭發(fā)上腹泌,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音尔觉,去河邊找鬼凉袱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛穷娱,可吹牛的內(nèi)容都是我干的绑蔫。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼泵额,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼配深!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嫁盲,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤篓叶,失蹤者是張志新(化名)和其女友劉穎烈掠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缸托,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡左敌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了俐镐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矫限。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖佩抹,靈堂內(nèi)的尸體忽然破棺而出叼风,到底是詐尸還是另有隱情,我是刑警寧澤棍苹,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布无宿,位于F島的核電站,受9級(jí)特大地震影響枢里,放射性物質(zhì)發(fā)生泄漏孽鸡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一栏豺、第九天 我趴在偏房一處隱蔽的房頂上張望彬碱。 院中可真熱鬧,春花似錦冰悠、人聲如沸堡妒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)皮迟。三九已至,卻和暖如春桑寨,著一層夾襖步出監(jiān)牢的瞬間伏尼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工尉尾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留爆阶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓沙咏,卻偏偏與公主長(zhǎng)得像辨图,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肢藐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容