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

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. Android:创建快捷方式
  2. Android(安卓)framwork 锁屏界面开发 笔
  3. Android官方入门文档[11]支持不同平台版
  4. android之Matrix
  5. 判断Android设备是否连接网络
  6. 2011.09.07——— android zxing 条形码
  7. Android(安卓)Studio 运行时出现 finishe
  8. Android(安卓)listview中使用button解决
  9. Telephony Call
  10. 记录几个android学习网站