首页 > 投稿 > 正文内容

手把手教你搞定移动端单元测试:从工具选型到真实案例拆解

投稿2025-05-28 04:45:55

馃攳 涓轰粈涔堜綘鐨凙pp鎬诲嚭bug锛熷彲鑳芥槸娌″仛瀵硅繖浠朵簨锛?/h3>

鍒氬叆琛岀殑绋嬪簭鍛樺皬鐜嬫渶杩戝緢閮侀椃鈥斺€斾粬寮€鍙戠殑璐墿杞﹀姛鑳藉湪娴嬭瘯鐜璺戝緱濂藉ソ鐨勶紝涓€涓婄嚎灏辩柉鐙傛姤閿欍€傝€佸紶鐬ヤ簡鐪间粬鐨勪唬鐮侊細"灏忕帇鍟婏紝浣犺繖鍗曞厓娴嬭瘯瑕嗙洊鐜囨€曟槸涓嶅埌20%鍚э紵"

绉诲姩绔紑鍙戞渶鎬曚粈涔堬紵涓嶆槸996锛岃€屾槸鈥?strong>鈥嬪弽澶嶅嚭鐜扮殑浣庣骇bug鈥?/strong>鈥嬶紒浠婂ぉ鍜变滑灏辫亰閫忓崟鍏冩祴璇曢偅浜涗簨锛岃浣犲憡鍒?浜哄伐debug姘稿姩鏈?鐨勫櫓姊︺€?/p>


馃О 绉诲姩绔祴璇曞伐鍏峰ぇ鐩樼偣锛氶€夐敊宸ュ叿=鐧藉共锛?/h2>

1锔忊儯 宸ュ叿閫夊瀷3澶у潙锛?0%鏂版墜閮借俯杩囷級

  • 鈥?strong>鈥嬪潙鈶犫€?/strong>鈥嬶細鐢≒C绔伐鍏锋祴绉诲姩绔紙姣斿鎷縎elenium纭垰锛?鈫?鎺т欢璇嗗埆鐜囨毚璺?0%锛?/li>
  • 鈥?strong>鈥嬪潙鈶♀€?/strong>鈥嬶細杩蜂俊澶у巶鍏ㄥ妗?鈫?缁撴灉鍙戠幇鍥㈤槦鏍规湰鐜╀笉杞紙璇寸殑灏辨槸鏌愬巶鑷爺妗嗘灦锛?/li>
  • 鈥?strong>鈥嬪潙鈶⑩€?/strong>鈥嬶細蹇界暐鐪熸満娴嬭瘯 鈫?妯℃嫙鍣ㄨ窇寰楁锛岀湡鏈轰竴璺戝氨闂€€

馃憠 鈥?strong>鈥?024骞村疄娴嬪伐鍏风孩榛戞鈥?/strong>鈥嬶紙鏁版嵁鏉ヨ嚜鑵捐WeTest鎶ュ憡锛?/p>

宸ュ叿绫诲瀷鎺ㄨ崘宸ュ叿鏂版墜鍙嬪ソ搴?/th>閫傜敤鍦烘櫙
瀹夊崜鍘熺敓娴嬭瘯Espresso猸愨瓙猸愨瓙璋锋瓕瀹樻柟妗嗘灦锛屾繁搴︾粦瀹欰S
璺ㄥ钩鍙版祴璇?/td>Appium猸愨瓙猸?/td>娣峰悎寮€鍙?H5椤?澶氳澶囧苟琛?/td>
杞婚噺绾у崟鍏冩祴璇?/td>Robolectric猸愨瓙猸愨瓙鏃犻渶鐪熸満锛岀绾у弽棣?/td>
鎬ц兘鐩戞帶Android Profiler猸愨瓙猸?/td>鍐呭瓨娉勬紡/CPU杩囪浇瀹炴椂鐩戞祴

馃И 浜斿ぇ鏍稿績鏂规硶鎷嗚В锛氭祴璇曡鐩栫巼浠?0%鈫?0%鐨勭璇€

2锔忊儯 鐧界洅娴嬭瘯锛氬儚X鍏変竴鏍烽€忚浠g爜

鍘诲勾鏌愬鍗朅pp鐧诲綍宕╂簝浜嬩欢锛屽氨鏄洜涓烘病鍋氣€?strong>鈥嬭矾寰勮鐩栨祴璇曗€?/strong>鈥嬶紒涓句釜鐪熷疄妗堜緥锛?/p>

java澶嶅埗
// 妫€娴嬬敤鎴疯緭鍏ユ槸鍚︿负11浣嶆墜鏈哄彿锛堟潵鑷綉椤?妗堜緥鏀圭紪锛?/span>
public boolean validatePhone(String number) {
    if(number == null) return false;
    return number.matches("^1[3-9]\\d{9}$"); 
}

// 鍗曞厓娴嬭瘯瑕佽鐩栬繖浜涙儏鍐碉細
@Test
void testValidatePhone() {
    assertFalse(validatePhone(null));       // 绌哄€兼祴璇?/span>
    assertFalse(validatePhone("1381234567"));// 10浣嶆暟瀛?/span>
    assertTrue(validatePhone("19912345678"));// 鍚堣鍙风爜
    assertFalse(validatePhone("10298765432"));// 鍙锋涓嶅悎娉?/span>
}

馃憠 鈥?strong>鈥嬪叧閿偣鈥?/strong>鈥嬶細鐢∕ockito妯℃嫙缃戠粶璇锋眰锛孞acoco鐢熸垚瑕嗙洊鐜囨姤鍛婏紝鎶婃瘡涓猧f/else閮?鍠?涓€閬嶆暟鎹€?/p>


3锔忊儯 榛戠洅娴嬭瘯锛氱敤鎴疯瑙掔殑鏆村姏缇庡

杩樿寰楁煇鐭棰慉pp鐨?鏃犻檺鐐硅禐"bug鍚楋紵杩欏氨鏄吀鍨嬬殑鈥?strong>鈥嬭竟鐣屽€兼祴璇曗€?/strong>鈥嬫病鍋氬ソ锛?/p>

鈥?strong>鈥嬪繀娴嬩笁澶ц竟鐣屸€?/strong>鈥嬶細

  1. 鏋佺鏁版嵁娴嬭瘯锛堟瘮濡傚晢鍝佷环鏍煎~999999999锛?/li>
  2. 骞跺彂鎿嶄綔娴嬭瘯锛?0绉掑唴杩炵画鎻愪氦50娆¤鍗曪級
  3. 寮傚父娴佹祴璇曪紙鏀粯杩囩▼涓獊鐒舵柇缃戯級

馃摫 鈥?strong>鈥嬬湡瀹炴渚嬧€?/strong>鈥嬶細鏌愮數鍟咥pp鐢ˋppium瀹炵幇鑷姩鍖栬竟鐣屾祴璇曪紝鍙戠幇璐墿杞﹀湪鍟嗗搧鏁伴噺鈮?99鏃朵細宕╂簝锛屾垚鍔熼伩鍏?18澶т績浜嬫晠銆?/p>


馃殌 瀹炴垬妗堜緥锛氫粠0鍒?鎼缓娴嬭瘯浣撶郴

4锔忊儯 寰俊灏忕▼搴忕櫥褰曟ā鍧楁祴璇曞叏娴佺▼

锛堟敼缂栬嚜缃戦〉10瀹炴垬妗堜緥锛?/p>

鈥?strong>鈥嬫楠ゆ媶瑙b€?/strong>鈥嬶細
1锔忊儯 鐢≧obolectric鍒濆鍖栧井淇DK鐜
2锔忊儯 閫氳繃Mockito浼€犲井淇℃湇鍔″櫒鍝嶅簲
3锔忊儯 杈圭晫娴嬭瘯锛氭ā鎷?绉掑唴杩炵画鐐瑰嚮鐧诲綍鎸夐挳10娆?br/> 4锔忊儯 寮傚父娴嬭瘯锛氬己鍒跺叧闂綉缁滄潈闄愬悗灏濊瘯鐧诲綍

鈥?strong>鈥嬮伩鍧戞寚鍗椻€?/strong>鈥嬶細

  • 涓嶈鐩存帴璋冪敤寰俊瀹樻柟鎺ュ彛锛佺敤WireMock鎼缓Mock鏈嶅姟鍣?/li>
  • 瀹夊崜8.0浠ヤ笂蹇呴』閫傞厤_android.permission.INTERNET_鏉冮檺

馃挕 鐙瑙佽В锛?024骞存祴璇曟柊瓒嬪娍

鏈€杩戝府鏌愰噾铻岮pp鍋氭祴璇曚綋绯诲崌绾ф椂鍙戠幇锛氣€?strong>鈥婣I浠g爜瀹℃煡宸ュ叿鈥?/strong>鈥嬭兘鑷姩鐢熸垚30%鐨勬祴璇曠敤渚嬶紒姣斿鐢–hatGPT鐢熸垚杈圭晫鍊兼祴璇曡剼鏈細

python澶嶅埗
# AI鐢熸垚鐨勮竟鐣屾祴璇曟渚嬶紙鎵嬫満鍙锋牎楠屽嚱鏁帮級
test_cases = [
    {"input": "19912345678", "expected": True},   # 鍚堣
    {"input": "1234567890a", "expected": False},  # 鍚瓧姣?/span>
    {"input": "", "expected": False},             # 绌哄瓧绗︿覆
    {"input": "112233445566", "expected": False}  # 瓒呴暱鏁板瓧
]

铏界劧涓嶈兘瀹屽叏鏇夸唬浜哄伐锛屼絾鑳借妭鐪?0%鐨勫熀纭€鐢ㄤ緥缂栧啓鏃堕棿銆?/p>


馃幆 鏈€鍚庤鐐瑰ぇ瀹炶瘽

鍗曞厓娴嬭瘯涓嶆槸閾跺脊锛屼絾缁濆鏄€т环姣旀渶楂樼殑璐ㄩ噺淇濋殰鎵嬫銆備笂鍛ㄧ湅鍒颁竴涓暟鎹細鈥?strong>鈥嬪畬鍠勭殑鍗曞厓娴嬭瘯浣撶郴鑳借绾夸笂宕╂簝鐜囬檷浣?2%鈥?/strong>鈥嬨€備笅娆″綋浣犲張鎯?鍏堣刀杩涘害锛屾祴璇曚互鍚庤ˉ"鏃讹紝鎯虫兂灏忕帇鍚屽鍑屾櫒涓夌偣杩樺湪鎶揵ug鐨勬偛鍌牱鍚?..

锛堟祴璇曠敤渚嬪啓寰楀ソ锛屼笅鐝洖瀹剁潯寰楁棭锛侊級

搜索