搜尋

搜尋結果

你開始寫 Spring Boot 測試案例了嗎?
科技新知
MacauYeah・2025-11-29

雖然筆者過往做 spring boot framework 教學中,都有滲入一些測試用例。筆者也曾經困惑了很長一段時間,所以就獨立開一個主題,聊一下筆者在實務上對spring boot test 的理解。 測試案例究竟測試什麼? 測試用例 test case 是確保你的程式碼正確性與穩定性的重要步驟,但在 framework 下,並不是所有功能都很容易寫成測試。所以在討論 framework 測試之前,釐清測試的本質。 function input business logic function output 這意味著我們輸入某些資料(input),然後經過業務邏輯(business logic)的處理,最後產生結果輸出(output)。 我們的測試目標,其實就是確保業務邏輯正確。而我們的手段就是經檢查概定的輸入資料,核對輸出結果。 那麼只要我們可以生成輸入資料,就一定可以檢查輸出結果了吧?其實不是的,因為實務上的輸入和輸出沒有這麼簡單。筆者常接觸到的輸入輸出如下 輸入 function 輸入參數 系統狀態資料,例如:資料庫狀態、外部API結果。 輸出 function 輸出參數 寫入系統(影響到)的資料,例如:資料庫狀態、使用外部API時的輸入參數。 總之就是考慮了狀態機 state machine 的問題,每個狀態外部輸入都是一個測試用例,然後核對狀態機去了下一個什麼狀態。 言下之意,我們就是暴力地生成輸入參數和模擬狀態資料,道理上就是可以進行測試。 Spring boot web framework 中,我們又會測試什麼? function input business logic function output在Spring boot web就變成如下 controller request business logic controller response在 Spring Boot test 中,我們可以用模擬的 MVC MockMvc 測試來驗證 controller 的行為。不過,其實進入 controller 前經過很多系統轉換,而這些道理上跟Framework的技術大相關,與業務邏輯小相關。所以為免折磨自己,可以將業務邏輯單獨封裝成服務(service)。之後直接測試服務 ,易寫也易讀。 controller request service input business logic service output controller response道理上 controller 能做的業務邏輯,服務 service 都可以無腦重現。這樣還可以重用服務,減少測試的數量。 如何實現輸入? 直接 new Object。大部份的情況下,因為業務是自己編寫的,應該都可以直接 new 出來。 經 json 檔讀入。如果輸入的參數量太多,逐個經 java new 是很耗時的,我們可以經 json 反序列化變成 Object。但這亦只限於自己可以操作改寫的類。 Mockito 模擬那些無法簡易經 new 或 json 反序列化的 Object。例如:spring security authentication object 我們在使用時,其實只看到 interface。我們難似自己實現一個可以反序列化的類,那麼我們可以使用 Mockito 來模擬這些資料。一些外部API的結果,我們也可以用使 Mockito 來模擬。 什麼情況下不進行測試? 有些情況下,我們可能選擇不對某些功能進行測試,原因可能包括對功能的了解不足或是單純的懶惰。以下是一些例子: 僅進行配置的Function:如果你的 Function 只是在 Framework 中填寫配置,而且你並不太了解它的運作原理,可能就不需要進行測試了。例如,Spring boot web 中,需要大家配置一個SecurityFilterChain Object,它要求大家將 HttpSecurity 轉換為 SecurityFilterChain 。因為輸入的 HttpSecurity 是系統固定的參數,我們亦沒有檢查它的狀態。這種情況下,它的輸入及輸出,其實我們都沒有真正理解。我們硬測試的話,測試功能可能只流於表面。若我們真的要做測試,也是經過MockMvc進行端到端測試(endtoend testing),測試它在事後的影響範圍。 單純的框架功能:例如資料庫的儲存庫介面(repository interface),雖然是在框架下生成的,對於自己手動調整的部份功能,筆者通常亦不會進行單獨測試,通常都會搭配業務邏輯一起進行。它可以使用 Mockito 進行模擬測試,或用測試環境的真實資料庫進行測試。 面對的挑戰 總括來講,筆者盡可能地把測試用例限定在業務邏輯中,就可以大大地降低寫測試的技術難度。但筆者還是有些問題並未完美解決。 測試用例的數量可能很多,因此共用與維護變得相當困難。逐個用例獨立編寫輸入也是很累的。對於 Mockito 的使用,筆者還是可免則免。因為要逐個功能模擬,編寫量就指數提高,這亦難似配合外部變化。一般來說,能優先使用測試環境或者 Docker 來模擬環境的,就盡量用。 離線開發、離線測試。系統依懶的外部功能越多,想做單機開發的難度就越高。即使前述有 Docker 測試,對於持續整合(CI)來講也是有一定難度。那麼這時,Mockito 就是一個可取的選擇。但這又回到編寫量及難以偵測外部變化問題。 希望這篇文章能幫助你更好地理解測試案例的編寫方向,並在Spring boot web開發中加入你自己的測試!

【聖誕必去送禮之選】Fun:Zone 快閃店登陸澳門! 玩具、護膚產品、家電、意大利食品樣樣齊
生活在我城
Lifemagshopper・2021-12-17

臨到聖誕,相信大家都想為重要的人精心挑選禮物,在這節慶期間留下美好回憶!現在 FunZone 在星皓廣場開設期間限定店,集齊玩具、小型家電、護膚產品及意大利食品等多種類型的產品,絕對是選購聖誕禮物的最佳去處!小編為大家整理 5 樣適合送禮的產品,還在為買禮物煩惱的你,立刻看下去吧! 快閃店位於氹仔星皓廣場地庫一層,就在玩具quot;反quot;斗城旁邊 【CyberCTM x FunZone 福利放送】 即日起至 12 月 22 日 去 CyberCTM 的 Facebook 玩遊戲,即有機會贏得 FunZone $100 現金購物券!快點去參加吧~ Giveaway 傳送門 1. Harry Potter Hogwarts Castle $4,404.90 哈利波特的霍格華茲魔法世界什麼時候都令人著迷,這副積木的細節設計及多樣式的配件,絕對會是哈利波特迷最驚喜的聖誕禮物! 裏面包括主角哈利波特、榮恩和妙麗,還有鄧不利多校長、石內卜教授及佛地魔等達 27 個角色。 2. Fiasconaro panettone $658 起 去探訪親朋好友,送上聖誕蛋糕更應節!這款是來自意大利西西利的著名聖誕蛋糕品牌 Fiasconaro,被譽為世上最好吃的 Panettone,更是著名時裝品牌 Dolce amp; Gabbana 指定的聖誕蛋糕制造商,蛋糕口感柔軟有韌性。分別有三種口味,包括牛奶及榛果朱古力、朱古力脆片及咖啡奶油 及 白朱古力及開心果口味,每款蛋糕都會配不同口味的 Fiasconaro spread,絕對是送禮佳品。 3.Reacute;colte 微笑鬆餅機烤盤 $328 起 早上悠閒地享用一頓豐富早餐,相信是不少人的夢想, 這個可愛的笑臉及小小兵鬆餅機絕對能獲得一眾女士的喜愛,不只顏值滿分,體積亦很細小,放在家中不占空間。送給你的摯愛,與她來一個浪漫早餐吧! 如果你的朋友經常在家煮食,送一個 Reacute;colte 的居家燒烤爐亦是一個不錯的選擇,這一款外型及顏色都非常吸睛,隨時在家都可以一解想吃燒烤的癮。 4.鬼滅之刃 竈門炭治郎 全集中 及 我妻善逸 雷之呼吸 模型 鬼滅之刃熱潮不斷,這個模體造工精細,像真度極高! 送這款模型給你熱愛這套動漫的朋友,一定能令他感受到你滿滿的心思。 竈門炭治郎模型 $679.90 我妻善逸模型 $739.90 5. Laundrin 皇牌經典花香限定香薰禮盒 及 粉嫩香甜花果限定香薰禮盒 $99.90 回到家聞到清新香氣令人心情都變好,這 Laundrin 的香薰禮盒價格合理,包裝亦很得體, 作聖誕派對時的交換禮物就最合適不過。 以上為小編推介的聖誕禮物之選,FunZone 同場亦有各種咖啡用品、收藏家玩具、Action figure 擺設、小型家電及生活用品、送禮精品 及 意大利食品,快點去選購你的心儀產品吧! FunZone 地址:氹仔星皓廣場地庫一層 期間:即日起至 2 月底 營業時間:1200 pm 900 pm

波爾多凍肉巡禮-美高梅寶雅座呈獻
澳城餐飲
LifeMag Editor・2015-08-07

肉質嫩滑的原隻「帶骨火腿」讓人垂涎欲滴。 澳門美高梅寶雅座法國餐廳於8月6日至30日呈獻法式「波爾多凍肉巡禮」,多逹28款的冷切肉配上各式各樣的配料及新鮮的麵包,必定令人回味無窮。 法國酒鄉波爾多除了以優質的紅白葡萄酒稱譽世界,其冷盤凍肉的美譽亦不遑多讓。澳門美高梅寶雅座餐廳特別邀請來自法國的客席名廚Jean Luc Molle專程遠道而來與寶雅座主廚Elie Khalife聯手合作,於炎熱的八月呈獻法式「波爾多凍肉巡禮」。 寶雅座餐廳已換上木製桌椅及酒桶等擺設裝飾,盡現法式古堡風情。多逹28款的冷切肉配上各式各樣的配料及新鮮出爐的麵包,滋味無窮;老饕們必定會喜愛美酒與冷切肉的組合,以葡萄酒搭配佳餚,更能提升美食的層次。 主打的冷切肉包括「朗德牛肝菌肉餅」、「雉雞肉凍」、「法國熏肉豬肉批」及「黑血腸」等,肉香四溢;喜愛煙熏味的食家不妨一試經典的「煙熏蒜香肉腸」及「莫爾托肉腸」;肉質嫩滑的原隻「帶骨火腿」及充滿油香的傳統「巴約納火腿」讓人垂涎欲滴。客席名廚Jean Luc Molle更為賓客特別秘製「酥皮鴨肉餡餅配鴨肝」和「鴨肉凍批配日式芥末及諾裡海藻」等的鴨肉系列凍肉,必定令人回味無窮。 於多逹13款的冷切肉配料中,不可不嚐寶雅座秘製「松露蛋黃醬」及「糖漬紅洋蔥」。而新鮮烤焗的麵包亦有10款之多,香脆獨特的「寶雅座招牌麵包」及幽香的「有機迷迭香麵包」,均是美高梅大廚的巧手出品。 寶雅座餐廳「波爾多凍肉巡禮」由8月6日至30日供應,賓客可選擇以每位澳門幤328元無限量任吃各式各樣的冷切肉、配料及麵包。客人亦可以澳門幤398元一嚐兩人份的「波爾多凍肉巡禮精選凍肉拼盤」。查詢及訂座,請致電853 8802 2319。 寶雅座法國餐廳營業時間:  星期二至星期五: 下午 6時至淩晨 12 時 星期六、日及公眾假期: 早上 11 時至淩晨 12 時 逢星期一休息  以上價格另加10%之服務費

洛克人X: 指令任務、熔鐵少女|一整個月都讓你有驚喜|Taiwan Speedrun Show
手機‧電玩
MacauYeah・2021-10-16

不經不覺,《Taiwan Speedrun Show》已經開始了十多天啦,你還不知道這是什麼? 其實《Taiwan Speedrun Show》是一個以台灣Speedrun社團主辦的活動,並開放華語區的跑者參加。 本年10月共31天,每天晚上將進行各種遊戲項目的Speedrun,隨時都觀迎花生友們,進來一起觀看神奇的快速通關精彩操作。除了作為觀眾,無論任何項目,只要你覺得準備好了,都可以一起參加Speedrun,推廣給更多華語區的朋友,認識這個競技與表演融合的特別節目。 洛克人X 指令任務 10月15日晚兩位大神「MengXiang」和「finalmethod」,為我們「洛克人X 指令任務」的同台比賽快速通關。原本是動作遊戲的洛克人改為RPG角色扮演,實在難跑阿。可是有專家們示範,原本數十小時的RPG一下子就變成3小時就能完成的遊戲。 限時完整重播用手機無法自動播放的朋友,可以按這裏或手動跳到29m20s處 熔鐵少女 這晚兩位大神還不止競賽洛克人指令任務呢,加碼再比一場「熔鐵少女」的同台比賽快速通關。這也是一款本年8月才發行的Steam遊戲,大神們研究攻略的速度真的驚人。新遊戲就為大家簡介一下,這遊戲是一款擁有Roguelike要素的塔防遊戲,玩家需要挑選隨機的卡牌抵擋敵人進攻。 限時完整重播用手機無法自動播放的朋友,可以按這裏或手動跳到29m20s處 10月16日節目預告 今晚將會由台主「wuseagal」帶來「忍者信使」遊戲的Speedrun。 Twitch的Live重播是有時間限制的喔,不想錯過任何精彩表現和重播,如果不想,記得按Twitch的遊戲追隨喔。成功追隨後,就可以看到更多沒有時限的精華剪輯。 過去幾天發生了什麼?快看這裏

強勢回歸!米芝蓮星級粵菜,四季酒店中餐廳——紫逸軒
專題報導
Lifemagfoodie・2020-08-21

作為得到米芝蓮星級中餐廳「紫逸軒」,出品向來頂尖,層出不窮的創意與傳統經典的廚藝碰撞下,打造不少優質粵饌。餐廳自上月裝修完後再次強勢歸來,保留中央的玻璃酒窖,一改過去的金色設計轉以低調高雅風格,燈飾、桌椅和牆飾統統換新,為食客提供更雅緻舒適的餐飲環境。 為慶祝紫逸軒重新開業,在星級名廚張志才帶領下,推出了超值晚市套餐。由即日起至9月30日,每位價格只需 $388,即可點選兩款主菜、一款湯及一款甜品,令食客可以盡情享受紫逸軒的招牌菜式。 蜜汁叉燒皇 作為紫逸軒的招牌菜,精選日本上等梅頭豬的後頸肉,為了精益求精,更只挑選中央最為軟嫩的部份,經過秘製醬汁醃製及燒烘,刷上琥珀色的麥芽蜜汁後色澤均勻,入口肥瘦相間,肉質亦極其鬆化。 四川口水花竹蝦 喜歡麻辣口味的話一定要一試,這道菜特別選用新鮮花竹蝦,淋上自家秘製辣油,令味道再次昇華,麻辣鮮香的味道非常開胃。 蠔皇日本關東遼參花膠海皇煲 如果想在$388的價錢下回本,那麼這道菜絕對不能錯過。日本關東遼參,花膠,另配上加拿大帶子及蝦仁,光是食材就已經相當豪華,各款海鮮處理亦相對繁複,需要有深厚功力才能令海鮮的鮮甜與醬料鹹香平衡,同時亦要嚴格控制烹調時間,才能令各款海鮮保持應有的獨特口感。 雪菜毛豆本菇煮濕竹 濕竹是一道極考功力的功夫菜,師傅把新鮮腐皮層層疊起,在一件濕竹中目測超過25層以上!而且還需要經過蒸、炸、煮等多重功夫才可以做好,加上野生雪菜等各種配料共同炮製而成,由於濕竹多層的構造可以在烹調時把菜汁緊鎖,在咬下去瞬間才會爆發,認真架勢! 荷香籠仔蒸龍躉球 這款以新鮮荷葉配上野生珍珠龍躉蒸製,過程中龍躉魚肉吸收了荷葉的鮮香,入口散發清香嫩滑,魚肉亦十分鮮甜,別具風味。 紫逸軒的甜品同樣出色,比主菜菜式有過之而無不及!芋茸燉鮮奶,更加是來到紫逸軒坐下來就必點的甜品,採用上等芋頭而成的芋泥非常細滑,與嫩滑燉奶共同燉煮,入口時奶香與芋香在舌尖同時淀發,香濃但卻甜而不膩,這款甜品每日供應有限,而且製作需20分鐘以上,記得趁早下單。 另一推薦的紅棗姜茶湯丸,自家製的手搓芝麻湯丸,外皮軟糯,芝麻餡細滑香濃不怕過甜,紅棗姜茶則暖胃驅寒,女士最愛。 除了這些招牌菜式外,紫逸軒亦會陸續推出新菜式,誓要為食客帶來更多味覺上的享受。這次率先試食新款點心mdash;mdash;雪影貢菜蟹肉餃,平時飲茶蝦餃吃得多,但蟹餃就比較少吃得到。這道點心以新鮮蟹肉、蝦仁配以蛋白、甘筍、貢菜作餡,半透明的水晶外皮軟薄之餘,口感軟滑爽口,摺口處更染上了淡淡的粉紅色,外型精緻吸引! 紫逸軒 餐廳地點: 澳門四季酒店一樓 營業時間: 午餐 周四至周六 上午1130 ndash; 下午300 午餐 周日 上午1130 ndash; 下午330 晚餐 周五至周六 晚上600 ndash; 900 詳細資料:httpswww.fourseasons.comzhmacaudiningrestaurantszi_yat_heen