寫了多年的安卓應(yīng)用程序,大大小小的項(xiàng)目也開發(fā)了若干個(gè),要做單元測(cè)試的口號(hào)也喊了很多年,可一直沒有實(shí)踐過。相信很多人跟我一樣,心里一直想做卻沒做起來??偨Y(jié)了下主要有以下幾個(gè)原因:
1.早期的安卓應(yīng)用程序都是采用MVC模式,基本上Activity里既包括了UI相關(guān)的內(nèi)容,也包括了各種業(yè)務(wù)邏輯的處理,這樣的Activity我們稱之為god class。這樣會(huì)導(dǎo)致很多業(yè)務(wù)邏輯處理的地方都會(huì)涉及到UI相關(guān),而凡是涉及到UI的地方,想要去寫單元測(cè)試幾乎是一場(chǎng)災(zāi)難;
2.早期Google沒有提供比較方便、簡(jiǎn)單、易用的單元測(cè)試工具,原來的單元測(cè)試必須要在安卓環(huán)境上才能運(yùn)行。這樣對(duì)開發(fā)非常不友好,我寫一個(gè)很簡(jiǎn)單的單元測(cè)試代碼,運(yùn)行的時(shí)候必須要先打包,然后再跑在真機(jī)或者模擬器上。如果大家用eclipse開發(fā)過安卓程序,估計(jì)都體驗(yàn)過漫長(zhǎng)的打包過程,動(dòng)不動(dòng)就卡死了,等個(gè)老半天才能出一個(gè)結(jié)果,說多了都是淚。
3.對(duì)單元測(cè)試的理解不夠深刻。APP開發(fā)出來后,大家都是直接扔給測(cè)試人員來進(jìn)行測(cè)試,心里會(huì)下意識(shí)地覺得測(cè)試應(yīng)該是測(cè)試人員干的活,我是干開發(fā)的,不應(yīng)該干測(cè)試的活。
4.公司老板不重視測(cè)試。有些老板認(rèn)為測(cè)試是浪費(fèi)時(shí)間,特別是APP測(cè)試,他們會(huì)認(rèn)為APP只要盡快實(shí)現(xiàn)功能,功能測(cè)試通過就OK了。(曾經(jīng)呆過的某公司老板就是這樣,特別排斥測(cè)試人員,覺得招聘測(cè)試人員就是浪費(fèi)錢,奇葩的是公司現(xiàn)在做的很大。)
5.國(guó)內(nèi)大環(huán)境氛圍太差。大部分時(shí)候,大家都在趕著開發(fā)新功能,趕上線,以至于單元測(cè)試這件事情,通常都會(huì)被忽略,甚至從來沒考慮過。而這一點(diǎn)在移動(dòng)開發(fā)上更甚,這樣導(dǎo)致在網(wǎng)上很難找到比較全面的關(guān)于APP單元測(cè)試的文章來學(xué)習(xí),讓想做單元測(cè)試的同學(xué)都不知道從何下手,因此陷入了一個(gè)惡性循環(huán)。
現(xiàn)在由于工作的原因,需要開始寫單元測(cè)試,加上自己對(duì)單元測(cè)試也很感興趣,研究了不少關(guān)于Android的測(cè)試方案并付諸實(shí)踐,取得了良好的效果,特將這些經(jīng)驗(yàn)和想法整理成一系列的文章,希望其他同學(xué)在這方面少走一些彎路。
系列文章:
Android單元測(cè)試(二):什么是單元測(cè)試
Android單元測(cè)試(三):測(cè)試難點(diǎn)及方案選擇
Android單元測(cè)試(五):JUnit進(jìn)階
Android單元測(cè)試(六):Mockito學(xué)習(xí)