android單元測試

1.什么是單元測試

定義

單元測試(unit testing),是指對軟件中的最小可測試單元進(jìn)行檢查和驗(yàn)證政模。對于單元測試中單元的含義笋熬,一般來說,要根據(jù)實(shí)際情況去判定其具體含義菩鲜,如C語言中單元指一個(gè)函數(shù)园细,Java里單元指一個(gè)類,圖形化的軟件中可以指一個(gè)窗口或一個(gè)菜單等接校∶推担總的來說,單元就是人為規(guī)定的最小的被測功能模塊蛛勉。單元測試是在軟件開發(fā)過程中要進(jìn)行的最低級別的測試活動(dòng)鹿寻,軟件的獨(dú)立單元將在與程序的其他部分相隔離的情況下進(jìn)行測試。

2.為何進(jìn)行單元測試

其實(shí)單元測試還是非常有必要寫的主要有以下兩點(diǎn)(最主要的還是前者):

提升逼格

沒錯(cuò)诽凌,程序員世界里沒有太多浮夸的東西烈和,你代碼里面有的,我卻沒有甚至沒聽說過那我承認(rèn)你比我牛逼

代碼穩(wěn)定性

寫代碼如同蓋房子皿淋,一個(gè)好的架構(gòu)確實(shí)很重要招刹,但是在實(shí)際操作中我們可以發(fā)現(xiàn)隨著產(chǎn)品的需求不斷更迭架構(gòu)也是越來越難以維持原來的形狀恬试。一開始也許你對自己的代碼也許很有自信,可以看著一個(gè)個(gè)方法摸著胸自問只要給我正確的輸入疯暑,那么一定會(huì)有正確的輸出训柴。但是實(shí)際情況未必,至少會(huì)有這么一種情況妇拯,你的那位仁兄看你代碼實(shí)在惡心稍微做了一下優(yōu)化幻馁,雖然他知道大概作用但是你隱藏的具體細(xì)節(jié)也只有你知道。恰好這個(gè)方法輸出的結(jié)構(gòu)對整個(gè)邏輯也沒有太大影響越锈,測試的妹紙也測不出來仗嗦。

所以說接下來這款產(chǎn)品可能會(huì)適合你,沒錯(cuò)就是單元測試甘凭。你的工程就好比整幢大樓稀拐,如果某個(gè)燈泡不亮了你不知道具體在那去修理,因?yàn)槟悴恢滥抢锇l(fā)生了短路丹弱,你更不敢跟產(chǎn)品交貨德撬。而單元測試就是在每段線路上加上一段傳感器,如果線路不同傳感器就會(huì)告知你那個(gè)方法出了問題躲胳。

我們舉一個(gè)具體栗子:判斷版本更新一般都會(huì)有雖然實(shí)現(xiàn)方法有很多不同蜓洪,但是主流的還是從服務(wù)器獲取一個(gè)版本號,然后這個(gè)版本號和本地版本號對比坯苹,這個(gè)對比的方法會(huì)出現(xiàn)三種結(jié)果 1服務(wù)器版本號比本地大隆檀,2服務(wù)器版本號比本地小,3相等.我們怎么才能確定這個(gè)方法能夠按照我們想象的那樣輸出想要的結(jié)果呢粹湃?沒錯(cuò)你可以一個(gè)一個(gè)試嘛刚操,先讓服務(wù)器同學(xué)配一個(gè)低版本號,然后再高版本號再芋,最后相等菊霜。這種做法完全沒有錯(cuò)誤〖檬辏可是產(chǎn)品要改需求鉴逞,你就需要更改你的這個(gè)方法。然后你再去麻煩服務(wù)器同學(xué)配置三次司训。但是有了單元測試你就可以寫三個(gè)測試用例构捡,給方法分別輸入三個(gè)與本地不同版本號,當(dāng)然也可以寫30個(gè)用例這取決于你壳猜。修改完代碼后或者交付前跑一次單元測試勾徽,如果全部跑通那么你可以摸胸自問交付你的產(chǎn)品。

說了這么多如果沒有成功對你洗腦那么可執(zhí)行 return;

3.環(huán)境配置

FBIWARNING:

本教程以下內(nèi)容是針對會(huì)使用AS并且能夠自主建立項(xiàng)目并運(yùn)行具有開發(fā)基礎(chǔ)人群編寫统扳,18歲以下兒童及未經(jīng)過特殊訓(xùn)練者請勿觀看喘帚,如果使用eclips用戶請升級到as畅姊。

接下來開始描述正事 請打開你的androidStudio吧

首先在app的gradle中添加如下兩行(一般gradle版本夠新都是生成代碼自帶的)

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) testCompile 'junit:junit:4.12'

然后在app的gradle中defaultConfig下面添加(需要運(yùn)行androidTest時(shí))

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

ok基本環(huán)境配置完成

4.目錄介紹

![Uploading Image2_332343.png . . .]

Image1.png

第一個(gè)androidTest下面放的是關(guān)于android的測試代碼需要運(yùn)行在手機(jī)或者模擬器上面,調(diào)用的方法可以是java也可以是android特有的吹由。

第二個(gè)目錄test僅僅是java代碼測試若未,他運(yùn)行在jvm虛擬機(jī)上,不需要外接設(shè)備運(yùn)行很快倾鲫,但是只能是java代碼粗合,像含有l(wèi)og的android代碼就不行有含有context更不行。

5.編寫測試用例

選中需要編寫測試用例的類名乌昔,右鍵會(huì)看到goto->test-->creatNewTest

Image2.png

里面選擇單元測試框架默認(rèn)junity4就行 會(huì)自動(dòng)生成橫線上的需要測試的方法勾選即可

Image3.png

測試生成會(huì)有兩個(gè)選項(xiàng)上面的是android測試隙疚,下面的是java測試

Image4.png

注解使用每個(gè)方法必須有注解@test 需要在運(yùn)行test之前需要@before(可有可無)

assertEquals()方法代表你的預(yù)期輸出結(jié)果跟方法運(yùn)行結(jié)果是否相等

進(jìn)入源碼能看到很多類似方法這里不一一講述

Image5.png

6.運(yùn)行測試用例

運(yùn)行方式很多種

1.直接點(diǎn)擊圖標(biāo)

Image6.png

選擇最后一個(gè)能看到測試日志,你項(xiàng)目的總共方法數(shù)磕道,測試包含了多少供屉,多少通過等等

Image7.png

2.點(diǎn)擊測試類右鍵

Image8.png

3.點(diǎn)擊測試類右鍵

Image9.png

下圖畫線1是android測試 2為java測試 配置testKind 和package即可

Image11.png

以上就是簡單的測試添加,當(dāng)然具體的還有頁面點(diǎn)擊mock等測試

查看官方使用說明(需要翻墻)

github官方demo-todo-app

mvp測試

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捅厂,一起剝皮案震驚了整個(gè)濱河市贯卦,隨后出現(xiàn)的幾起案子资柔,更是在濱河造成了極大的恐慌焙贷,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贿堰,死亡現(xiàn)場離奇詭異辙芍,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)羹与,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門故硅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纵搁,你說我怎么就攤上這事吃衅。” “怎么了腾誉?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵徘层,是天一觀的道長。 經(jīng)常有香客問我利职,道長趣效,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任猪贪,我火速辦了婚禮跷敬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘热押。我一直安慰自己西傀,他們只是感情好斤寇,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著池凄,像睡著了一般抡驼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肿仑,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天致盟,我揣著相機(jī)與錄音,去河邊找鬼尤慰。 笑死馏锡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的伟端。 我是一名探鬼主播杯道,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼责蝠!你這毒婦竟也來了党巾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤霜医,失蹤者是張志新(化名)和其女友劉穎齿拂,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肴敛,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡署海,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了医男。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砸狞。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖镀梭,靈堂內(nèi)的尸體忽然破棺而出刀森,到底是詐尸還是另有隱情,我是刑警寧澤报账,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布研底,位于F島的核電站,受9級特大地震影響笙什,放射性物質(zhì)發(fā)生泄漏飘哨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一琐凭、第九天 我趴在偏房一處隱蔽的房頂上張望芽隆。 院中可真熱鬧,春花似錦、人聲如沸胚吁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腕扶。三九已至孽拷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間半抱,已是汗流浹背脓恕。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留窿侈,地道東北人炼幔。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像史简,于是被迫代替她去往敵國和親乃秀。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,754評論 25 707
  • Android單元測試介紹 處于高速迭代開發(fā)中的Android項(xiàng)目往往需要除黑盒測試外更加可靠的質(zhì)量保障圆兵,這正是單...
    東經(jīng)315度閱讀 3,096評論 6 37
  • 什么是單元測試 在計(jì)算機(jī)編程中跺讯,單元測試(Unit Testing)又稱為模塊測試, 是針對程序模塊(軟件設(shè)計(jì)的最...
    HelloCsl閱讀 10,942評論 1 46
  • 協(xié)議的格式 協(xié)議的定義方式與類,結(jié)構(gòu)體殉农,枚舉的定義都非常相似 遵守協(xié)議的格式 協(xié)議的基本使用 定義協(xié)議和遵守協(xié)議 ...
    猴子的救兵520閱讀 545評論 0 1
  • 親愛的寶貝: 十四年前的這個(gè)夜晚刀脏,夏風(fēng)微醺。你在比預(yù)產(chǎn)期足足延后了二十天后统抬,在全家人焦灼的等待中火本,姍姍而來危队。 在你...
    簡之寧閱讀 507評論 2 16