在Android Studio中使用JUnit4進(jìn)行單元測(cè)試(一)

前言

? ? 5月份我從平安離職,辦完離職手續(xù)后相繼又玩了半個(gè)多月酷鸦,中途一邊玩一邊面試睹逃,也算是給自己放了個(gè)小長(zhǎng)假,直到6月中旬才入職一家新創(chuàng)業(yè)公司早直。然而這家公司有一個(gè)非常重的KPI指標(biāo)(單元測(cè)試)寥假。毋庸置疑,程序員要對(duì)自己編寫的代碼負(fù)責(zé)霞扬,你不僅要保證它能通過(guò)編譯糕韧,正常地運(yùn)行,而且要滿足需求和設(shè)計(jì)預(yù)期的效果喻圃。單元測(cè)試正是驗(yàn)證代碼行為是否滿足預(yù)期的有效手段之一萤彩。但不可否認(rèn),做測(cè)試是件很枯燥無(wú)趣的事情(至少我是很排斥的)而一遍又一遍的測(cè)試則更是讓人生畏的工作斧拍。正因?yàn)槿绱寺闊┤阜觯猿绦騿T們編寫單元測(cè)試的熱情不是很高。但是沒(méi)辦法肆汹,苦于無(wú)奈公司要求寫測(cè)試用例愚墓,只能硬著頭皮上予权,因?yàn)槟銈兪枪こ處煟瑳](méi)有什么是不可能的浪册。幸運(yùn)的是扫腺,單元測(cè)試工具 JUnit使這一切變得簡(jiǎn)單藝術(shù)起來(lái)。

調(diào)查發(fā)現(xiàn)

通過(guò)和幾個(gè)開發(fā)朋友的討論议经,和網(wǎng)上的調(diào)查斧账,主要有這幾種原因谴返,導(dǎo)致程序員對(duì)單元測(cè)試很排斥煞肾,或許說(shuō)很不以為意。

◆不知道怎么編寫單元測(cè)試

◆項(xiàng)目沒(méi)有要求嗓袱,所以不編寫

◆單元測(cè)試價(jià)值不高籍救,完全是浪費(fèi)時(shí)間

◆業(yè)務(wù)邏輯比較簡(jiǎn)單,不值得編寫單元測(cè)試

◆不管怎樣渠抹,集成測(cè)試將會(huì)抓住所有的 bug蝙昙,用不著進(jìn)行單元測(cè)試

◆在項(xiàng)目的前期還是盡量去編寫單元測(cè)試,但是越到項(xiàng)目的后期就越失控

◆為了完成編碼任務(wù)梧却,沒(méi)有足夠的時(shí)間編寫單元測(cè)試奇颠。編寫單元測(cè)試會(huì)導(dǎo)致不能按時(shí)完成編碼任務(wù),導(dǎo)致項(xiàng)目延期

◆Android 主是還是界面上的東西放航,很多業(yè)務(wù)邏輯不好模擬測(cè)試用例

很顯然烈拒,這些原因歸根結(jié)底,無(wú)外乎就是不了解單元測(cè)試广鳍,自認(rèn)為很聰明荆几,自己懶不想去測(cè)試,對(duì)項(xiàng)目的時(shí)間赊时、進(jìn)度把控不好吨铸。

JUnit4注解解釋

1. @Test : 測(cè)試方法,測(cè)試程序會(huì)運(yùn)行的方法祖秒,后邊可以跟參數(shù)代表不同的測(cè)試诞吱,如(expected=XXException.class) 異常測(cè)試,(timeout=xxx)超時(shí)測(cè)試

2. @Ignore : 被忽略的測(cè)試方法

3. @Before: 每一個(gè)測(cè)試方法之前運(yùn)行

4. @After : 每一個(gè)測(cè)試方法之后運(yùn)行

5. @BeforeClass: 所有測(cè)試開始之前運(yùn)行

6. @AfterClass: 所有測(cè)試結(jié)束之后運(yùn)行

fail方法是指測(cè)試失敗

assertEquals測(cè)試2個(gè)參數(shù)是否相等竭缝,具體參考相應(yīng)API

更多方法可參考相應(yīng)API文檔(博文末尾分享下載連接給大家)

1.新建一個(gè)工程后以如果用Eclipse還要下載相對(duì)應(yīng)的jar包房维,這里主要以Android Studio 為主,畢竟Google已經(jīng)不更新ADT了歌馍,這里不做過(guò)多的解釋握巢。 新建工程后,我們?cè)?app/build.gradle 配制如下圖:

這樣依賴就配好了松却。

2.創(chuàng)建一個(gè)Calculator類暴浦,里面主是要我們要測(cè)試的方法溅话。代碼如下:

3.打開工程結(jié)構(gòu)我們可以清楚的看到Android Studio 測(cè)試有兩個(gè)目錄,androidTest/test,androidTest測(cè)試目錄是android 自己本身的主要是測(cè)UI測(cè)試,這里主要講Junit所以我們只要關(guān)心test 里寫相對(duì)應(yīng)的測(cè)試方法即可歌焦。代碼如下:

我們只要在test/對(duì)測(cè)試類即可飞几。 細(xì)心的同學(xué)有沒(méi)有注意到,Junit其實(shí)就是注解以的方式独撇,在本文的開始前屑墨,已經(jīng)做了對(duì)應(yīng)注解的介紹。 setup();方法就是初始化對(duì)象 @Before, 拿對(duì)對(duì)象我們才可以調(diào)用Calculator類中我們寫的函數(shù)纷铣。大家有沒(méi)有看到我在setup()做了一層不為空的判斷卵史,這樣的好處就是,不用每次都創(chuàng)建新的實(shí)例(這也是性能優(yōu)化的一種體現(xiàn)搜立,提高代碼質(zhì)量)以躯。調(diào)用Calculator中的函數(shù)add()方法,這是一個(gè)加法的運(yùn)算啄踊。 通過(guò)傳參我們可以知道結(jié)果是多少忧设。Assert.assertEquals(7,sum); 其實(shí)就是一個(gè)預(yù)期值與實(shí)際值的一個(gè)對(duì)比。(注:別忘了在方法前加下 @Test颠通,這樣Junit才知道這是一個(gè)測(cè)試方法)接下來(lái)址晕,我們可以測(cè)試了。


到這里就結(jié)束了顿锰,源碼大家可以從github下載谨垃。

https://github.com/KnightOneAdmin/android_junit_tutorial.git

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市撵儿,隨后出現(xiàn)的幾起案子乘客,更是在濱河造成了極大的恐慌,老刑警劉巖淀歇,帶你破解...
    沈念sama閱讀 212,222評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件易核,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡浪默,警方通過(guò)查閱死者的電腦和手機(jī)牡直,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)纳决,“玉大人碰逸,你說(shuō)我怎么就攤上這事±樱” “怎么了饵史?”我有些...
    開封第一講書人閱讀 157,720評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我胳喷,道長(zhǎng)湃番,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,568評(píng)論 1 284
  • 正文 為了忘掉前任吭露,我火速辦了婚禮吠撮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘讲竿。我一直安慰自己泥兰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評(píng)論 6 386
  • 文/花漫 我一把揭開白布题禀。 她就那樣靜靜地躺著鞋诗,像睡著了一般轻庆。 火紅的嫁衣襯著肌膚如雪区端。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,879評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音江锨,去河邊找鬼。 笑死糕篇,一個(gè)胖子當(dāng)著我的面吹牛啄育,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拌消,決...
    沈念sama閱讀 39,028評(píng)論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼挑豌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了墩崩?” 一聲冷哼從身側(cè)響起氓英,我...
    開封第一講書人閱讀 37,773評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鹦筹,沒(méi)想到半個(gè)月后铝阐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,220評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铐拐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評(píng)論 2 327
  • 正文 我和宋清朗相戀三年徘键,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遍蟋。...
    茶點(diǎn)故事閱讀 38,697評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吹害,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出虚青,到底是詐尸還是另有隱情它呀,我是刑警寧澤,帶...
    沈念sama閱讀 34,360評(píng)論 4 332
  • 正文 年R本政府宣布,位于F島的核電站纵穿,受9級(jí)特大地震影響烟号,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜政恍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評(píng)論 3 315
  • 文/蒙蒙 一汪拥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧篙耗,春花似錦迫筑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蒙保,卻和暖如春辕棚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背邓厕。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工逝嚎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人详恼。 一個(gè)月前我還...
    沈念sama閱讀 46,433評(píng)論 2 360
  • 正文 我出身青樓补君,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親昧互。 傳聞我的和親對(duì)象是個(gè)殘疾皇子挽铁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評(píng)論 2 350

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