当前位置: 首页 > 后端技术 > Java

我不写单元测试,我被批了

时间:2023-04-01 23:41:26 Java

鎴?y锛宮arkdown绋嬪簭鍛橈紝涓€骞碈RUD缁忛獙锛屽崄骞寸粡楠岎煈煆烩€嶐煉诲父骞磋瑾変负涓撲笟鍒绘澘鐜╁銆傝皥璋堟垜鐨勬劅鍙椼€傝€佸疄璇达紝鎴戝鍗曞厓娴嬭瘯涓嶆槸寰堢啛鎮夈€傛垜鍑犱箮涓嶅啓鍗曞厓娴嬭瘯锛屼篃涓嶅お鍠滄鍐欏崟鍏冩祴璇曘€傛垜鍦ㄦ帹骞挎柊闂绘帹閫佸钩鍙癮ustin鐨勬椂鍊欙紝琚壒璇勬病鏈夊鏁翠釜椤圭洰杩涜鍗曞厓娴嬭瘯锛岃繕鏈変汉璁╂垜鍔犲崟鍏冩祴璇曘€?1.鍗曞厓娴嬭瘯锛圲NITTEST锛夋垜鏈変竴涓墠鍚屼簨锛岃繘浜嗕竴瀹跺浼併€備粬璇达紝杩涘叆澶栦紒鍚庯紝瀛﹀埌浜嗗緢澶氭柊鍚嶈瘝銆傚垰杩涘幓鐨勬椂鍊欙紝浠栦笉鐭ラ亾浠栦滑鍦ㄨ浠€涔堚€︹€︿粬闂垜锛歎T锛屼綘鐭ラ亾浣犱粈涔堟剰鎬濆悧锛熸垜璇达細涓嶇煡閬撱€備粬璇达細UT灏辨槸UnitTest锛屽崟鍏冩祴璇曟垜璇达細浣犱滑鐜板湪閮借鍐欏崟鍏冩祴璇曞悧锛熶粬璇达細鏄殑銆傚悗鏉ュ湪缇ら噷鑱婂ぉ鐨勬椂鍊欙紝鍙戠幇鏈変竴涓仛浼侀箙鐨勫ぇ鍝ヤ笉鐭ラ亾UT鏄粈涔堟剰鎬濓紝鎵嶆澗浜嗗彛姘斻€?2.鑰冭瘯绉嶇被鏈夊摢浜涳紵瀵逛簬鎴戜滑寮€鍙戣€呮潵璇达紝鍙兘鍒嗕负涓夌被锛?.鍗曞厓娴嬭瘯锛氭祴璇曟煇涓被涓殑浠g爜鏄惁姝e父2.闆嗘垚娴嬭瘯锛氳法妯″潡娴嬭瘯鏌ョ湅浠g爜鏄惁姝e父3.End-to-绔祴璇曪細浠庣敤鎴风殑瑙掑害锛屼粠绯荤粺鏁翠綋鏉ョ湅鍔熻兘鏄惁姝e父銆傚洜姝わ紝褰撴垜浠湪绋嬪簭鍛樹腑璋堣鍗曞厓娴嬭瘯鏃讹紝鍙兘鏄函鍗曞厓娴嬭瘯锛屼篃鍙兘鏄泦鎴愭祴璇曘€傛瘯绔熻繖澶ф鐜囧簲璇ユ槸鎴戜滑鍋氱殑銆?3.涓轰粈涔堥渶瑕佸崟鍏冩祴璇曪紵瀵逛簬鎴戣繖绉嶄笉鎬庝箞鍐欏崟鍏冩祴璇曪紝涔熶笉鍠滄鍐欏崟鍏冩祴璇曠殑浜烘潵璇达紝鍢撮噷涔熺紪涓嶅嚭鍐欏崟鍏冩祴璇曠殑鐞嗙敱锛屼笉鍐欏崟鍏冩祴璇曞氨鏄竴涓悊鐢便€傛垚鍫嗕簡璇村埌鍗曞厓娴嬭瘯锛岃繕鏈変竴涓瘝涓嶅緱涓嶆彁锛孴DD锛圱est-DrivenDevelopment锛夋祴璇曢┍鍔ㄥ紑鍙戯細鍦ㄥ紑鍙戝姛鑳戒唬鐮佷箣鍓嶏紝鍏堝啓鍗曞厓娴嬭瘯鐢ㄤ緥浠g爜锛岀敱娴嬭瘯浠g爜鍐冲畾闇€瑕佸啓浠€涔堜骇鍝佷唬鐮?鏄湁浜夎鐨勶紝浣嗘槸杩欎釜鏂规硶璁虹殑浠嬬粛鍜屽緢澶氬悓琛岀殑瀹炶返鑷冲皯鍙互璇存槑娴嬭瘯鐨勯噸瑕佹€с€?銆佸綋鎴戜滑瑕佹祴璇曢儴鍒嗕唬鐮侀€昏緫鏄惁姝e父鏃讹紝鍙互鐩存帴浣跨敤psvm鏋勯€犳暟鎹紝鐒跺悗璋冭瘯銆傞偅涔堬紝濡傛灉鏈変粈涔堜笢瑗垮彲浠ュ皢鎴戜滑鐨刾svm鏀惧湪鏌愪釜鍦版柟鍛紵2.褰撴垜浠湪绯荤粺涓慨鏀瑰ぇ閲忎唬鐮佹椂锛屾垜浠笉纭畾杩欎簺淇敼鏄惁浼氬奖鍝嶅埌鏍稿績閫昏緫銆傞偅涔堝鏋滄湁浠€涔堜笢瑗垮彲浠ュ湪缂栬瘧鐨勬椂鍊欓『渚胯嚜鍔ㄨ繍琛岄€昏緫鍋氬洖褰掑憿锛熸棤璁烘槸閲嶆瀯杩樻槸姝e紡娴嬭瘯涔嬪墠锛岄兘璁╂垜鎻愰珮浜嗗啓浠g爜鐨勪俊蹇冦€?銆佸綋鎴戜滑寰堝鏄撲竴涓嶅皬蹇冩妸浠g爜鍐欐垚涓€鍫嗙嫍灞庣殑鏃跺€欙紝濡傛灉鏈変粈涔堜笢瑗垮彲浠ヨ鎴戜滑鍦ㄧ紪鐮佺殑鏃跺€欐敞鎰忚嚜宸辩殑浠g爜璁捐鍛紵4銆佸綋鎴戜滑杩欎釜瀛e害浠€涔堥兘娌″仛锛屼絾鏄郴缁熸病鏈夊嚭鏁呴殰鐨勬椂鍊欙紝濡傛灉鏈変粈涔堝彲浠ヨ鎴戜滑缁橩PI鍔犱釜娴撳ⅷ閲嶅僵鍛紵5....娆㈣繋琛ュ厖锛屾槸鐨勶紝杩欎釜涓滆タ灏辨槸鍗曞厓娴嬭瘯銆?4.鍗曞厓娴嬭瘯鎬庝箞鍐欙紵寰堥暱涓€娈垫椂闂达紝鎴戝濡備綍缂栧啓鍗曞厓娴嬭瘯鐨勭煡璇嗛兘鍋滅暀鍦↗unit涓娿€傚悗鏉ヨ窡杩涘浼佺殑灏忎紮浼村拰缇ら噷鐨勬淮婊村皬鍝ヤ氦娴侊紝鍙戠幇浠栦滑浼氱敤Mockito妗嗘灦鍐欏崟鍏冩祴璇曘€傝繃绋嬩腑鐪嬩簡涓€浜涘叧浜嶮ockito鍗曞厓娴嬭瘯鐨勬枃绔狅紝浣嗘槸鎬绘槸浼氭湁涓€浜涙妧鏈悕璇嶅姖鎴戦€€鍑猴紝鑰屾垜杩欓噷涔熷緢鎳傦紝鍐欑殑鏃跺€欒繕寰楃湅銆?銆佸湪SpringBoot鐜涓嬩娇鐢∕ockito锛屽彧闇€瑕佸紩鍏pring-boot-starter-test鍗冲彲銆傞粯璁ゆ儏鍐典笅锛孧ockito鐩稿叧鐨勪緷璧栨槸鍐呯疆鐨?dependency>org.springframework.bootspring-boot-starter-test2.鎴戜滑鐨勫崟鍏冩祴璇曟槸鍐欏湪瀵瑰簲鐨則est鐩綍涓嬨€傛兂涓€鎯冲氨鐭ラ亾浼氭湁鎻掍欢鍙互甯姪鎴戜滑閫氳繃涓荤被鎴愪负瀵瑰簲鐨勬祴璇曠被銆傛垜浠笉闇€瑕佹垜浠墜鍔ㄦ瀯寤哄寘鍜屾祴璇曠被銆備簬鏄紝鎴戞壘鍒颁簡squaretestplugin3.闃呰浜嗕竴浜汳ockito鐩稿叧鐨勬暀绋嬫潵浜嗚В瀹冪殑API鍜屾蹇点€傛帹鑽愯繖涓暀绋嬶細https://www.letianbiji.com/ja...4.鑷繁鍐欎竴涓崟鍏冩祴璇曪紝鏈夋噦鍐欒繃绋嬪拰缁忛獙鐨勪汉鐪嬪埌杩欓噷鍙兘浼氶棶锛氫负浠€涔堣鐢∕ockito杩欐牱鐨勬祴璇曟鏋惰€屼笉鏄函Junit锛熷湪鎴戠湅鏉ワ紝绛旀鏄細鎴戜滑鍦ㄦ祴璇曠殑鏃跺€欙紝瀵硅薄鍙兘鍦⊿pring涓嬶紝鎴戜滑涓嶈兘鐩存帴new锛屾垨鑰卬ew瀵硅薄鐨勬垚鏈緢楂橈紙渚濊禆绛夐棶棰樿瑙e喅锛夈€傝繖鏃跺€欐垜浠氨闇€瑕丮ock瀵硅薄鍑烘潵妯℃嫙鎴戜滑鍒涘缓鐨勫璞★紝鑰屽湪瀛︿範Mockito娴嬭瘯妗嗘灦鐨勮繃绋嬩腑锛屽叾瀹炲氨鏄Mock/Stub/Spy杩欏嚑涓蹇电殑鐞嗚В浠ュ強瀹冧滑鐨勪娇鐢ㄣ€侻ock鍜孲py閮芥槸閫氳繃妯℃嫙鍒涘缓涓€涓璞°€備笉鍚岀殑鏄疭py妯℃嫙鍒涘缓鐨勫璞′細鐪熸璋冪敤鏂规硶锛岃€孧ock妯℃嫙鍒涘缓鐨勫璞′笉浼氱湡姝h皟鐢ㄦ柟娉曘€侻ock妯℃嫙鍒涘缓鐨勫璞′笉浼氳皟鐢ㄨ鏂规硶銆傜湡姝g殑鏂规硶锛屼絾鏄垜浠楠岃瘉瀹冪殑杩囩▼锛屾€庝箞鍔炲憿锛熸瘮濡傛垜姝e湪鍐欎竴涓湇鍔″眰鐨勫崟鍏冩祴璇曘€傛垜瑙夊緱dao灞傜殑浠g爜鏄甯哥殑锛屼絾鏄痵ervice闇€瑕乨ao瀵硅薄鏉ヨ闂暟鎹簱銆傝繖鏃跺€欐垜Mock鍑篸aomock瀵硅薄鏉ヨ皟鐢ㄦ柟娉曘€傛墍浠ユ垜鍋囪璋冪敤dao灞傜殑涓€涓柟娉曡繑鍥炲€兼槸澶氬皯銆傝繖涓繘绋嬪氨鏄疭tub05銆傚垰鎵嶇殑闆嗘垚娴嬭瘯鎬庝箞鍐欍€傛垜浠湪浣跨敤Mockito鏃讹紝涓嶄緷璧朣pring鐜锛屽璞¢兘鏄疢ocked銆傞€熷害鐪熸锛岄潪甯稿揩銆備絾鏄垜浠粡甯搁渶瑕佷緷璧朣pring鐜璺ㄦā鍧楄皟璇曞姛鑳芥槸鍚︽甯搞€傝繖涓椂鍊欐垜浠細浣跨敤@SpringTest淇敼娴嬭瘯绫伙紝琛ㄧず鎴戦渶瑕佷竴涓猄pring鐜銆傜幇鍦ㄦ湁浜哠pring鐜锛屽氨鍙互浣跨敤@Autowire绛夋敞瑙d簡銆傚鏋滀綘鍦╳eb妯″潡涓嬪惎鍔ㄥ畠锛屼綘浼氬彂鐜板畠鐪熸鍚姩鐨勬槸搴旂敤绋嬪簭鐩稿叧鐨勭幆澧冿紝鐒跺悗涓撻棬杩愯杩欎釜娴嬭瘯鏂规硶銆?5.涓轰粈涔堟垜涓嶅枩娆㈠啓鍗曞厓娴嬭瘯锛熶笟鍔′唬鐮佸啓瀹屼簡锛屽張鍥炲幓鍐欏崟鍏冩祴璇曘€傚崟鍏冩祴璇曟槸鎴戣嚜宸卞啓鐨勩€傛垜妯℃嫙鍑烘ā鎷熷璞★紝鐒跺悗瀛樻牴銆傚湪鏁翠釜杩囩▼涓紝鎴戣涓烘垜鍐欑殑浠g爜鏄纭殑銆傜瓑鎴戝啓瀹岋紝鐪嬪埌缁胯壊鐨勬锛屾垜骞朵笉鎰忓銆傛瘯绔燂紝鎴戦拡瀵规垜鐨勪笟鍔′唬鐮佺紪鍐欎簡鍗曞厓娴嬭瘯銆傚苟涓旈泦鎴愭祴璇曞凡缁忛泦鎴愪簡鎵€鏈塖pring鐜鐩稿叧鐨勪緷璧栵紝鎴戝彲浠ョ洿鎺ュ湪鏈湴鍚姩鏈嶅姟锛岃嚜宸辫皟銆傦紙鐩镐俊缁濆ぇ澶氭暟鐪嬭繖绡囨枃绔犵殑浜洪兘涓嶆槸鍦═DD妯″紡涓嬪紑鍙戠殑锛屽簲璇ラ拡瀵硅嚜宸卞啓鐨勪笟鍔′唬鐮佸啓鍗曞厓娴嬭瘯銆傦級鍐欏崟鍏冩祴璇曚唬鐮佷篃鏄唬鐮侊紝闇€瑕佹椂闂淬€傛垜涔熷幓闂簡鑵捐/婊存淮/闃块噷/瀛楄妭鐨勬湅鍙嬶紝鍙戠幇浠栦滑涔熶笉鍠滄鍐欏崟鍏冩祴璇曘€傚緢澶氭椂鍊欙紝浠栦滑鍐欏崟鍏冩祴璇曞彧鏄负浜嗛€氳繃缂栬瘧锛屼负浜嗕笟鍔¤鐩栵紝鍙互缁曡繃銆備负浠€涔堜笉闂含涓?鎷煎澶?缇庡洟/缃戞槗绛夛紵鍒棶锛岄偅鏄洜涓轰綘杩樹笉澶啛鎮夈€傜湅鍒拌繖绡囨枃绔犵殑鍚屼簨涓€瀹氬湪鍥㈤槦涓帹鍔ㄤ簡缂栧啓鍗曞厓娴嬭瘯銆備笉濡ㄥ湪璇勮鍖哄啓涓嬪師鍥狅紝鎷晳鎴戜滑杩欎簺杩疯矾鍙堜笉鐖卞啓鍗曞厓娴嬭瘯鐨勪汉銆傚鏋滀綘鎯冲涔燡ava椤圭洰锛屾垜杩樻槸寮虹儓鎺ㄨ崘鎴戠殑寮€婧愰」鐩柊闂绘帹閫佸钩鍙癆ustin锛屽彲浠ヤ綔涓烘瘯涓氳璁℃垨鑰呮牎鎷涳紝鍙互鐪嬬湅鐢熶骇鐜鏄浣曟帹閫佹柊闂荤殑銆俛ustin娑堟伅鎺ㄩ€佸钩鍙伴」鐩簮鐮丟itee閾炬帴锛歡itee.com/austinaustin娑堟伅鎺ㄩ€佸钩鍙伴」鐩簮鐮丟itHub閾炬帴锛歡ithub.com/austin