Android(安卓)鍗曞厓娴嬭瘯灏忔€荤粨
Android 鍗曞厓娴嬭瘯
淇濊瘉鏈€灏忕殑鐙珛鍗曞厓锛堝嚱鏁帮級鐨勪唬鐮佹槸鍚︽纭€?/p>
璇︾粏浠嬬粛锛?br> https://github.com/leeowenowen/AndroidUnitTest
鎺ㄨ崘鏂囩珷锛?br> http://chriszou.com/2016/06/07/android-unit-testing-everything-you-need-to-know.html
涓轰粈涔堝仛鍗曞厓娴嬭瘯
- 鏂逛究閲嶆瀯锛屼慨鏀逛唬鐮侊細鏀瑰墠璺戜竴閬嶏紝鏀瑰悗璺戜竴閬?/li>
- 鏇村揩鐨勫弽棣堬細姣忓紑鍙戝畬涓€涓嫭绔嬫ā鍧楀悗灏卞彲浠ユ祴璇?/li>
- 鑺傜害鏃堕棿锛?0%缂栫爜锛?0%娴嬭瘯銆傛敼涓€娆★紝缂栬瘧涓€娆°€?/li>
- 鎻愬崌浠g爜璁捐锛歍DD锛屾瘡涓被鏇村皬锛岃亴璐f洿鏄庣‘锛屽姛鑳藉崟涓€銆備粠缁存姢鑰呯殑瑙掑害鍘荤紪鍐欎唬鐮併€?/li>
- 瀵硅蒋浠惰川閲忕殑鎻愬崌锛氫粠浠g爜灞傞潰鍙戠幇bug
娴嬩粈涔?/h3>
鍗曞厓娴嬭瘯锛屾槸涓轰簡娴嬭瘯鏌愪竴涓被鐨勬煇涓€涓柟娉曡兘鍚︽甯稿伐浣滐紝鑰屽啓鐨勬祴璇曚唬鐮併€傚畠涓嶆槸娴嬭瘯涓€鏁翠釜娴佺▼銆傝€岄潪public鏂规硶鏄繖涓被鐨勫疄鐜扮粏鑺傦紝鎴戜滑骞朵笉鍏冲績锛屾垜浠彧鍏冲績鏌愪竴涓猵ublic鏂规硶鐨勮緭鍏ャ€佽緭鍑恒€?/p>
- 鏈夎繑鍥炲€硷細杈撳叆鍝嶅簲鍙傛暟锛屾煡鐪嬭繑鍥炲€?/li>
- 娌¤繑鍥炲€硷細楠岃瘉鏂规硶琚皟鐢?/li>
闂
- 涓€鑸潵璇达紝鍗曞厓娴嬭瘯涓嶄細鎺ヨЕ鍒版暟鎹簱锛屼笉浼氭帴瑙﹀埌缃戠粶锛屼笉浼氭帴瑙﹀埌涓€浜涘鏉傜殑澶栭儴鐜锛屽鏋滄湁鐨勮瘽锛岄偅鍙兘鏄綘娴嬭瘯鐨勬柟寮忔湁璇紝娴嬭瘯鐨勭矑搴︿笉澶熲€滃崟鍏冣€濄€?/li>
- public锛宲rivate鏂规硶涓嶅绉戝
- 闇€瑕佸鍔犱笌涓氬姟鏃犲叧鐨勪唬鐮佸幓娴嬭瘯浠g爜
- 闇€瑕佹ā鎷烝ndroid鐨勭被锛岀敓鍛藉懆鏈熶互鍙婅繍琛岀幆澧?
- MVP锛孧VVM, DI灏嗕笟鍔″眰瀹屽叏鍓ョ鍑烘潵锛屽彉鎴愮函java鏂逛究娴嬭瘯
- TDD
濡備綍娴嬭瘯
Mock
鎵€璋撶殑mock灏辨槸鍒涘缓涓€涓被鐨勮櫄鍋囩殑瀵硅薄锛屽湪娴嬭瘯鐜涓紝鐢ㄦ潵鏇挎崲鎺夌湡瀹炵殑瀵硅薄锛屼互杈惧埌涓ゅぇ鐩殑锛?/p>
- 楠岃瘉杩欎釜瀵硅薄鐨勬煇浜涙柟娉曠殑璋冪敤鎯呭喌锛岃皟鐢ㄤ簡澶氬皯娆★紝鍙傛暟鏄粈涔堢瓑绛?/li>
- 鎸囧畾杩欎釜瀵硅薄鐨勬煇浜涙柟娉曠殑琛屼负锛岃繑鍥炵壒瀹氱殑鍊硷紝鎴栬€呮槸鎵ц鐗瑰畾鐨勫姩浣?/li>
Mockito
涓枃鏂囨。锛歨ttps://github.com/hehonghui/mockito-doc-zh
PowerMock
PowerMock鏀寔闈欐€?final浠ュ強绉佹湁鏂规硶鐨刴ock
瀹樼綉锛歨ttps://github.com/powermock/powermock
鎺ㄨ崘鏂囩珷锛歨ttps://my.oschina.net/jackieyeah/blog/157076
娴嬭瘯妗嗘灦
JUnit
鍗曞厓娴嬭瘯鐨勬湰璐ㄤ緷鏃ф槸楠岃瘉鍑芥暟鐨勫姛鑳斤紝娴嬭瘯妗嗘灦涔熸槸JUnit
setup锛園Before锛?/p>
鎵ц鎿嶄綔(@Test,@After)
-
楠岃瘉缁撴灉(@Assert):
- assertEquals(expected, actual)
- assertTrue/False(boolean condition)
- assertNull/NotNull(Object obj)
濡傛灉鏈夊紓甯革細
@Test(expected = Exception.class)
娌℃姏鍑猴紝娴嬭瘯澶辫触
Robolectric(鎺ㄨ崘)
JVM涓婃棤娉曡皟鐢ㄥ畨鍗撶浉鍏崇殑绫伙紝鎵€浠ラ渶瑕佷娇鐢≧obolectric鏉ユā鎷焌ndroid鐨勮繍琛岀幆澧冦€?/p>
浣跨敤Robolectric鍚庝篃鍙互娴嬭瘯android涓殑瑙嗗浘灞炴€э紝鐐瑰嚮浜嬩欢锛岃烦杞瓑銆?/p>
Android Testing Support Library
璋锋瓕瀹樻柟鎻愪緵鐨勬祴璇曞伐鍏?br> https://google.github.io/android-testing-support-library/
- Espresso锛圲I鑷姩鍖栨祴璇曪級
- AndroidJUnitRunner锛堝崟鍏冩祴璇曪級
- Instrumentation锛堝彲妯℃嫙Android鐜锛岀被浼糝obolectric锛?/li>
- Unit4 Rules
- UiAutomator
缁忛獙
test鍜宎ndroidTest
鏋勫缓椤圭洰鏃朵細鑷姩鍒涘缓涓や釜娴嬭瘯鐨刾ackage:androidTest鍜宼est锛屾病鏈変篃鍙互鑷繁鍒涘缓锛屾垜涓汉绠€鍗曠殑鐞嗚В涓猴細
- test锛氫笉闇€瑕佷緷璧栬繍琛岀幆澧冪殑JUnit鍗曞厓娴嬭瘯浠g爜鏀捐繖閲?/li>
- androidTest: 闇€瑕佷緷璧栬繍琛岀幆澧冿紙妯℃嫙鍣ㄦ垨鐪熸満锛夌殑闆嗘垚娴嬭瘯锛孶I娴嬭瘯浠g爜鏀捐繖閲?/li>
鍒涘缓娴嬭瘯绫?/h4> - 鎵撳紑瑕佹祴璇曠殑绫?/li>
- 鐐瑰嚮Android Studio鑿滃崟鏍?-> Navigate -> Test -> Crate test case...
- 閫夋嫨闇€瑕佹祴璇曠殑鍑芥暟锛屼互鍙婃祴璇曟鏋剁瓑绛?/li>
娴嬭瘯Realm
https://github.com/realm/realm-java/tree/master/examples/unitTestExample
娴嬭瘯Rxjava
http://www.programcreek.com/java-api-examples/index.php?api=rx.observers.TestSubscriber
gradle鎵цUnitTest
-
./gradlew test
杩愯鎵€鏈塎odule涓嬬殑娴嬭瘯 - test 鍛戒护瀹為檯鍖呭惈浜唗estDebug鍜宼estRelease浠ュ強鍏朵粬娓犻亾鍖?濡傛灉鏈夌殑璇濓紝濡傦細testAmazonDebug,testAmazonRelease锛?/li>
- 鍦?code>{@projectName}/{@moduleName}/build/reports/tests涓嬩細鐢熸垚娴嬭瘯缁撴灉鐨勬姤鍛?/li>
- 濡傛灉杩愯鏃跺嚭鐜伴敊璇細涓柇锛屽彲浠ヤ娇鐢?code>./gradlew test --continue鏉ヤ笉涓柇鎵ц
- 濡傛灉鎯冲崟鐙祴璇曟煇涓ā鍧椾篃鍙互浣跨敤
./gradlew {@moduleName}:test
姣斿./gradlew lib_dao:testReleaseUnitTest
Jenkins CI
濡傛灉鎯冲湪build缁撴潫鍚庣敓浜nit Test鐨勬姤琛細
- 纭畾鍦ㄦ瀯寤烘椂鎵ц浜唃radle test鐩稿叧鐨則ask
- 鍦ㄦ渶鍚庝竴姝ユ坊鍔犱竴涓猙uild step锛屽彨鍋?code>Publish Junit test result report,灏嗙敓鎴愮殑鎵€鏈夋祴璇曠粨鏋滄枃浠讹紙xml锛夌殑璺緞娣诲姞鍒?code>Test report XMLs鍙傛暟涓紝渚嬪
lib_dao/build/test-results/release/*.xml
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer