日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 测试教程

發布時間:2025/4/16 Android 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 测试教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android 測試教程:http://wiki.jikexueyuan.com/project/android-test-course/

每個開發者都應該懂一點單元測試

一、什么是單元測試?

為了測試某個類中的某一個方法能否正常工作,而寫的測試代碼。

單元的定義:代碼中可度量的最小單元(函數/方法);

是否正常工作:不同的輸入對應的輸出是否與預期一致。

二、單元測試有必要嗎?

1、 對是否有必要寫單元測試的疑惑

沒有價值:不做單元測試一樣地開發,并沒有什么問題(解釋:);

浪費時間:寫單元測試需要大量的時間,還不如寫具體的實現,具體的實現能看到明顯的效果,但單元測試可能耽誤正常的迭代進度;

無法測試:比如無返回值的方法、UI等;

2、 不寫單元測試會存在的一些問題:

要有足夠的耐心:改一個參數,需要重新運行一遍程序;

沒有足夠的自信:每次提測和發布,心驚膽戰,對自己寫的程序沒有信心;

要有足夠的時間:必須要等到測試發現bug后才去改善;

bug太多,程序很難穩定:可以看下你自己開發的應用,如果有做異常采集,上報的大多數異常問題,都是因為程序沒有做好容錯導致的,比如空指針、被除數為0、數組越界等;

3、 單元測試能夠解決的問題

效率:如果沒有單元測試就必須把程序運行起來測試;運行一次單元測試,最多幾分鐘,cover得比較全面,相比于執行程序,效率高很多很多;

質量:對于每個最小單元,針對不同輸入對應的輸出有與預期做對比,能夠減少因為參數導致的異常問題,同時提測和發布版本的時候,有信心;

提升設計能力:為了每個單元都可測,需要將每個方法拆得盡量獨立,如果不拆得足夠獨立,就無法測試,間接可以提高程序設計能力;

代碼重用:跑過單元測試的代碼,穩定性能夠得到保證,可以在其它項目或者項目重構時重復利用;

縮短測試周期:程序自測(開發人員寫單元測試、手動跑基本功能、跑monkey都屬于自測)可以提高產品提測的質量,避免返工;同時核心功能的穩定有助于縮短黑盒測試的周期。

三、哪些可以做單元測試?

任何方法都可以做單元測試;

從必要性來講,針對UI相關的做單元測試必要性不大,并且很多東西需要主觀判斷;所以只針對Model和Control層做測試;

私有方法同樣可以測試(反射,或者在測試時改為public方法),但非public方法是這個類的實現細節,其它類并不關心,不用測試;

四、關于單元測試的一些概念

1、 分類

按測試內容分:

功能測試:和UI無關,測試IO操作、算法、流程等;

UI測試:測試UI交互邏輯,比如點擊、登陸等;

按是否依賴設備分

不依賴Android設備,只需要運行在JVM上的;→真正的單元測試,執行快,效率高;

依賴Android設備(模擬器/真機),需要程序運行時狀態信息的,比如獲取磁盤空間、四大組件的上下文信息、異步任務、消息傳遞等;→其實是集成測試,需要運行整個程序,執行慢,效率低;

2、 測試框架

如果沒有框架該如何做單元測試

自己寫程序進行邏輯判斷(麻煩、加入測試程序有bug怎么辦?);

在console中觀察測試結果;

測試框架能夠提高測試效率

JUnit、Instrumentation test、Espresso、UI Automator、Robolectric、Appium、Robotium

JUnit:能夠直接在PC上執行;

AndroidTest:需要依賴Android設備;

Robolectric:在不需要依賴Android環境的前提下,實現在PC上直接運行Android的單元測試;

Robotium:第三方UI測試框架;

Espresso:Google推出的UI測試框架;

UI Automator:流程的UI測試框架;

3、 覆蓋率

衡量單元測試質量,通過覆蓋率測試,可以明確知道哪部分代碼已經被單元測試覆蓋到,哪部分沒有進行單元測試;常用的單元測試插件有Emma、JaCoCo;

4、 JUnit框架中的常用方法

setUp/@Before:在每個單元測試方法執行之前調用;

tearDown/@After:在每個單元測試方法執行后調用;

setUpBeforeClass/@BeforeClass:在每個單元測試類運行前調用;

tearDownAfterClass/@AfterClass:在每個單元測試類運行完成后調用。

Junit3中每個測試方法必須以test打頭,Junit4中增加了注解,對方法名沒有要求,@Test就可以。

5、 一個單元測試的流程

setUp:設置前提條件,比如初始化;

執行動作:調用被測方法,并得到返回結果;

驗證結果:驗證獲取的結果和預期是否一致;

6、 關于Mock

在寫單元測試的過程中,我們可能會發現需要和系統內的某個模塊或系統外某個實體交互,而這些模塊或實體在您做單元測試的時候可能并不存在,比如您遇到了數據庫、遇到了驅動程序等。這時開發人員就需要使用mock技術來完成單元測試。

mock就是創建一個類的虛假的對象,在測試環境中,用來替換掉真實的對象,以達到兩個目的:

驗證這個對象的某些方法的調用情況,調用了多少次,參數是什么等等;

指定這個對象的某些方法的行為,返回特定的值,或者是執行特定的動作。

要使用mock技術,就需要使用mock框架,Mockito和Jmockit是android平臺兩個常用的mock框架,其中Mockito不能mock static method和final class、final method,但Jmockit可以。

7、 依賴注入在單元測試中的使用

上文中提到的Mock技術就是創建一個類的虛假的對象,在測試環境中用來替換掉真實的對象,但如何在測試環境下,將某個類替換成mock的對象就需要使用到依賴注入了,他的基本理念是,某一個類(比如說DataActivity),用到的內部對象(比如說DataModel)的創建過程不在DataActivity內部去new,而是由外部去創建好DataModel的實例,然后通過某種方式set給DataActivity。這種模式應用是非常廣泛的,尤其是在測試的時候。常見的依賴注入框架有:Roboguice、Dagger、Dagger2。

在實際寫單元測試的過程中,mock技術會經常用到,所有非常有必要熟悉其中一種依賴注入框架,關于依賴注入的詳細解釋可以參見公共技術點之依賴注入。

五、單元測試集成到Jenkins

Jenkins上不需要任何改動,執行現有的gradle命令會自動執行單元測試,測試不通過會報編譯錯誤;

六、說明

不要指望對某個方法的單元測試一次能夠寫得足夠完美,單元測試也是需要持續迭代的(比如入參考慮得不全面、單元測試粒度沒有足夠細等);

并不是所有針對源碼級別寫的測試代碼都叫單元測試,針對具體某一個方法的測試叫單元測試,涉及到UI層面、必須要運行程序才能跑的測試叫集成測試,比如很多基于android平臺的第三方UI測試框架;

test和androidTest文件夾的區別:如果你是用Android Studio做開發,在創建工程的時候,src文件夾下會同時生成三個文件夾main、test、androidTest,其中test和androidTest是專門針對源碼級別的白盒測試的,test文件夾用于寫不依賴設備環境的單元測試,即直接在PC上即可運行的測試,特點是測試效率高;androidTest文件夾用于寫需要在設備上才能運行的測試,比如測試依賴android API和設備環境的時候(context、IO操作、UI測試等),就需要在這個文件夾下面寫單元測試了,其特點是必須要編譯生成APK后才能測試,效率低;

測試驅動開發(TDD)的這種軟件開發方法提倡先寫測試程序,再才編碼實現具體的功能;

原文鏈接:澤眾微信平臺,https://sanwen8.cn/p/5efFzuh.html

總結

以上是生活随笔為你收集整理的Android 测试教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本黄色美女网站 | 末路1997全集免费观看完整版 | 毛片网站免费在线观看 | 国产一级免费视频 | 老妇裸体性猛交视频 | 欧美精品xx | 欧美破处女| 插女生下面 | 免费啪啪小视频 | 99精品偷自拍 | 在线观看日韩视频 | 欧美精品在线看 | 日韩黄大片 | 久久午夜激情 | 嫩草影院在线免费观看 | youjizz日本人 | 亚洲精品乱码久久久久久国产主播 | 亚洲一区 | 成人乱人乱一区二区三区一级视频 | 91视频网页| 国产乱来视频 | 日本少妇高潮喷水xxxxxxx | 国产成人一区二区三区视频 | √8天堂资源地址中文在线 欧美精品在线一区二区 | 日韩jizz | 久久久久国产精品一区 | 欧美日韩一二三四区 | 黄色二级视频 | 99精品视频在线观看 | 无码人妻精品中文字幕 | 性色一区 | 香蕉视频黄版 | 久久久久亚洲精品国产 | 91久久久久国产一区二区 | 日韩国产欧美一区二区 | 91插插插永久免费 | 国产精品久久久久久亚洲影视 | 亚洲激情电影在线 | 亚洲色婷婷久久精品av蜜桃 | 中国女人毛茸茸 | 成长快手短视频在线观看 | 成人免费xxxxx在线视频 | 日本www高清| 久久无码人妻精品一区二区三区 | 久久国产精品久久精品国产 | 极品白嫩的小少妇 | 免费一级黄色大片 | 国产不卡av在线播放 | 一边摸一边做爽的视频17国产 | 一级做a爱 | 国产白嫩美女无套久久 | 在线精品观看 | 日韩中文欧美 | 国产tv在线观看 | 啪啪网免费 | 久久久久毛片 | 亚洲乱论| 中文有码视频 | 日韩少妇一区二区三区 | 国产女上位 | 日韩精品在线免费观看 | 99日精品| 久草热线 | 老牛影视少妇在线观看 | 高h全肉污文play带道具 | 黄色大全免费观看 | 182tv午夜福利在线观看 | 亚洲精品免费视频 | 精品国产中文字幕 | 五月婷婷六月色 | 亚洲视频免费播放 | 亚洲区一| 波多野结衣中文字幕一区二区 | 欧美日本一区二区 | 越南性xxxx精品hd | 人妻丰满熟妇无码区免费 | 中文字幕欧美人妻精品一区蜜臀 | 国产黄a三级三级看三级 | 国产suv精品一区二区6 | 丰满人妻一区二区三区免费视频棣 | www.999热| 欧美多人猛交狂配 | 无码无遮挡又大又爽又黄的视频 | 91美女在线 | 国产精品久久久久久69 | 免费成人在线观看 | 国内久久久 | 超碰97人| 亚洲国产成人精品女人 | 午夜视频福利在线观看 | 日本黄图 | 无码精品国产一区二区三区免费 | 黄色免费网站视频 | 插吧插吧网 | 亚洲av无码精品一区二区 | 插插宗合网 | 九九热视频精品在线观看 | 欧美福利视频在线观看 | 美女扒开尿口让男人爽 |