搜尋

搜尋結果

你開始寫 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進行端到端測試(end-to-end testing),測試它在事後的影響範圍。 單純的框架功能:例如資料庫的儲存庫介面(repository interface),雖然是在框架下生成的,對於自己手動調整的部份功能,筆者通常亦不會進行單獨測試,通常都會搭配業務邏輯一起進行。它可以使用 Mockito 進行模擬測試,或用測試環境的真實資料庫進行測試。 面對的挑戰 總括來講,筆者盡可能地把測試用例限定在業務邏輯中,就可以大大地降低寫測試的技術難度。但筆者還是有些問題並未完美解決。 測試用例的數量可能很多,因此共用與維護變得相當困難。逐個用例獨立編寫輸入也是很累的。對於 Mockito 的使用,筆者還是可免則免。因為要逐個功能模擬,編寫量就指數提高,這亦難似配合外部變化。一般來說,能優先使用測試環境或者 Docker 來模擬環境的,就盡量用。 離線開發、離線測試。系統依懶的外部功能越多,想做單機開發的難度就越高。即使前述有 Docker 測試,對於持續整合(CI)來講也是有一定難度。那麼這時,Mockito 就是一個可取的選擇。但這又回到編寫量及難以偵測外部變化問題。 希望這篇文章能幫助你更好地理解測試案例的編寫方向,並在Spring boot web開發中加入你自己的測試!

Home Media「睇節目,賀台慶,領獎券」+ 10 月娛樂推介
生活在我城
Cheers!・2023-10-20

Home Media「睇節目,賀台慶,領獎券」 想同屋企人一齊感受 TVB 台慶嘅熱鬧氣氛同睇一眾藝員嘅精彩演出 ?依家只要喺活動期間睇 Home Media 嘅 TVB Anywhere 節目 ,同登記參加台慶,累積觀看時間最長嘅客戶,就有機會獲贈《萬千星輝賀台慶》入場門票 2 張,同您喜愛嘅藝員近距離接觸,仲有 $300 八佰伴現金券添 !日日睇,中獎機會越大! 立即登記:https://qrcodes.pro/YHIbFp 今期 TVB Anywhere 仲有台慶劇《香港人在北京》、《羅密歐與祝英台》,班底陣容強大,精彩好戲看不停! Home Media 10 月娛樂推介 雲遊戲:Blacknut 最新上架《New Joe & Mac - Caveman Ninja》《The Crackpet Show》等,更推出全新中文介面 ‼️,一家大細都啱玩 電影:《藍甲蟲》、《極悍巨鯊 2:深溝》緊貼戲院上架 hmvod 綜藝:芒果 TV 國際現正熱播《披荊斬棘 3》、《中餐廳》 配合 Home Media 電視盒子,一個賬號,全家盡享豐富娛樂同本地資訊!詳情:https://qrcodes.pro/I60NJ9 唔想錯過 Home Media 一系列精彩娛樂同活動 ,就快 d 去申請啦! 流動電話客戶:申請 5G 月費計劃,即送 12 個月 TVB Anywhere(原價:$68 / 月)+ 1 個月 Blackut 雲遊戲服務(原價:$98 / 月)!更享優惠價 $28 加購 hmvod / 芒果 TV 國際服務 同低至 $99 拎走 Home Media 電視盒子! 優惠詳情:https://qrcodes.pro/yQDw7G 居家光纖寬頻客戶享低至 $0 換購 Home Media 電視盒子連 24 個月 TVB Anywhere 服務(原價:$2,512),再送 2 個月 hmvod 連 12 張電影券 + 芒果 TV 國際服務! 更多優惠:https://qrcodes.pro/tMbdpn Home Media 娛樂優惠:https://qrcodes.pro/cPdSdx

無為,我們可以想想無為對自己有什麼幫助
宗教玄學
熊神進・2023-10-13

#莊子的無為# 熊老師(風水課程導師,執業30多年) 讀者「一冭」從山東來電給我,我此時地處「白俄羅斯」, 正在酒店房工作中, 我耐心聽她的話, 她是「北大」教授, 我們是在美國學術交流中認識。 佛說人生八苦,生活中亦有很多事情都讓我們痛苦,例如一位醫務主任, 她最近跟我聊天, 事緣有一位病人,他的背景非常亮麗, 他患了某種病(不公開),整個醫療團隊結案是不可以做手術, 但病人的地位很特殊,他們沒有選擇, 只可以聽病人的要求。 我們天天教學生跟命運對抗,其實, 教壇之下有很多教師都是「無為」。 工作上有它的棘手問題,感情上有它的煩惱問題,財政上有它的困擾,筆者認為我們可以用「無為」心態解決。 「無為」是什麼? 老子《道德經》第三十七章說“道常無為而無不為”。 「無為」是無,「無不為」是有,老子的哲學觀就是筆者教學時常常引用的宇宙覲, 一切萬事萬物都因執著才痛苦,我們為何不交給「自然」,我們只懂在愛情上佔有對方,我們只懂不擇手段向上爬,我們只懂擁有而不懂放下,我們真的做了「人上人」嗎?如果我們讀懂「無為」, 我們就是明白「得無了,才有」那種宇宙道理。無心、無為,無求、無欲,我們不受拘束限定,沒有負累壓力,沒有內耗,這就等於「無不為」,我們什麼都「有」了。 「宇宙觀」就是人要遵循自然規律,順應自然的運行,不必去干預自然的運行,不做不必的事,但也必須去做守法規, 道德, 行大愛, 為眾生服務的義務。作為自然與社會一部分的你,遵循自然邏輯該做的事(無不為)。 我們一生就是「無為」, 我們最後都是「無不為」。 我們為何要「無為」, 為何做事要用平常心, 就是消解那種對抗感的內耗,在愛情上你追求什麼, 其實只是「小愛」, 你只是想男人日日夜夜在你身邊, 抱抱你, 買東西給你, 說一些你喜歡聽的話, 這些都是小愛, 你愈是想一個男人, 你愈是嫉妒, 你內心愈是犯三毒, 你的內耗就愈多。 對抗自然,跟人爭吵,就令我們精神處在高度緊張, 我們吃不好,睡不甜, 最終是內耗, 我們生活的質素就退減, 人就活在痛苦中。我們之所以生活痛苦,煩惱,不安, 就是因為我們90% 能量用於對抗「不自然」的能量中去。工作上的矛盾也是一樣, 我們想辭工,我們的腦子裡出現一正一負的思想, 有思想說忍一忍明天會更好,有思想說世界很大我們要出去看看,外人是看不出我們的痛苦, 而內心世界是外在的投影,我們天天內耗自己的能量,最終是「無為」, 又還是「無不為」? 我們為了工作,為了愛情,為了生活已經內耗90% 能量,我們餘下的10%就是更有價值,這10%是什麼?筆者認為是「無為」。「無為」就是不內耗自己能量,我們對自己放下, 對小愛放下,對金錢放下,我們保持一種自然感, 「自然感」是需要付出痛苦的代價,記起《莊子·人間世》有一句話“知其不可奈何而安之若命,德之至也。” 這句話寫出了「無為」人生哲學,人遭受的不幸看作命中註定,因而甘心承受。 當我們離婚後, 沒有什麼好哭, 我們燒一套「心經筒香」, 我們感恩前夫、前男友對我的愛,我們把身上的玷污潔體淨心,我們沒有埋怨,感恩分手。女人分手後, 玄學家常常說一句話“一切都是因果”,因果是什麼, 也是命運的交替累迭,也是人生的自然。 人的內耗是因為執著「有」,有了太太就想有孩子,有了房子就想多購一套給老爸,有了工作就想升職,先生小姐啊,「無欲則剛」,心境清靜平和,沒有世俗的欲望,你的生活才有安定。 筆者年青時在印度學佛,當地的佛教也有與「無為」對等的概念,梵語為:“Nirvikalpa”,在佛學中,一般譯為 “無分別心”。而與「無不為」有共同觀念,我嘗試稱為「自我」,意思是,一個人最初,最自然的本性。

人,什麼時候才能覺悟?
宗教玄學
熊神進・2020-10-07

三世書說, 我們是渴了「孟婆湯」才過奈河橋, 如果它是真的, 那麼, 我們每個人投胎來人間都是頭腦一片空白, 我們本來就是「無明」, 我們的智慧, 又是從何而來? 我們常常罵人執迷不悟, 為何一定要「悟」?做一個快樂的平凡人不是更好嗎?在玄學上的解釋, 凡五行不平衡, 食神過弱, 又或某些元素塞阻, 都會令一個人內向、自閉、憂鬱、恐懼、怠惰。筆者在工作中, 常常遇上某些「自以為是」的客人, 他/她們是有豐富的主觀能力, 不樂意接受別人批評, 在佛教, 叫「執著心」, 人之所以有「執著心」, 就是「未覺悟」。 覺悟,即佛菩薩開悟我們智慧,讓我們身處俗世也能透徹瞭解正知正念,不為娑婆迷茫,在繁麈中非常自在、篤定。風水師傅認為覺悟是智慧的來源,釋迦牟尼佛是覺悟者,徹底覺悟了的人,我們受外界影響, 受五毒侵蝕, 我們雖然還沒有覺悟成「佛」,但我們可以通過學佛、持戒、修行、行善成為「未來佛」。修行、行善就是「悟」的起步禮, 錯誤的行為招來六道三途的果報,錯誤行為提醒我們會有厄運(離婚、失業、破產);現在我們放下執著覺悟了,把這些錯誤行為修正過來。 覺,कुमारजीव譯作「道」,玄奘譯作「覺」。「覺」有覺察、覺悟兩層意思:覺察即察知惡事,覺悟即開悟智慧。永嘉大師講得好:「夢裡明明有六趣,覺後空空無大千」,大千就是六道輪回。不覺悟去輪回, 你認為這一生不是白過嗎? 我們都是薄地凡夫, 每天沉醉在五毒中, 我們迷信自己, 執著自己, 在風雨飄搖下,我們為何仍是不覺不悟?誰會令我們大徹大悟, 這不會在紙醉金迷的晚上, 也不會被豬朋狗友引導,最起緣的,就是我們手上有一件「辰石覺悟吊牌」。 「辰石覺悟吊牌」 是佛菩薩的珍貴加持物, 具有玄力正能量, 可以益升一個人的智慧, 減退大千世界的煩惱, 尤其是工作壓力、經濟壓力、生活壓力重的女生。 筆者早年在Југославија 超度時, 當地的信士感恩我們祈福,他們把幾塊「辰砂」原石送了給我們, 這是大自然珍貴資源, 開鑿一塊,就少了一塊。師兄們把石塊運去印度寺廟供養, 13年後再送去印尼(過程非常困難, 因為很多國家禁止朱砂進口), 周周轉轉, 最後結緣, 在當地做了6千多件吊墮、聚寶盤法器, 這些都是珍貴供養法寶。 「辰石覺悟吊牌」的設計意念只有一個, 就是以六字明咒化去孽障, 再給佛菩薩加持, 給我們開智慧, 我們通過修行、守戒、行善來「悟」, 請感恩。 天然朱砂用於安神、鎮靜,它們主要成份為硫化汞,還常夾雜雄黃、磷灰石、瀝青質等。由於制做過程中添了玄粉, 加上吊墜個子很小, 如果小孩一定要佩戴,容易吞食, 導致窒息, 請家長放在小孩觸摸不到的地方, 這是很重要。朱砂自古被認為有避邪的作用,廣泛用於製作吉祥物或神像用以配戴或擺設。2021年的化太歲法鏈, 我們在開光加持時都用上朱砂。 「辰石覺悟吊牌」是風水師傅開光加持的時候, 以使 用者的姓名、出生資 料灌入吊墜裡, 永久封存, 做到趨吉避凶的殊勝, 是女性的護身吉祥物。 「辰石覺悟吊牌」有2個小孔, 你自己用一條頸線串起來, 掛在脖子, 又或手繩,甚至掛在床頭、放在包裡也可以, 因為法器都是為你邢開光了, 就是有玄力。 如有任何問題,歡迎聯絡: 林小姐: 13726267799(晚8時後) 或加微信號 13726267799 熊神進:澳門 853-66618785 公共微信: macaumasterxiong 私人微信: macaumickey 淘寶風水法器店:http://macauhung.taobao.com Facebook: 熊神進(澳門風水師) 中國澳門風水掌相學會會長(澳門政府註冊) 熊神進玄學信箱 https://goo.gl/jAVv8U

人,什麼時候才能覺悟?
宗教玄學
熊神進・2020-10-07

三世書說, 我們是渴了「孟婆湯」才過奈河橋, 如果它是真的, 那麼, 我們每個人投胎來人間都是頭腦一片空白, 我們本來就是「無明」, 我們的智慧, 又是從何而來? 我們常常罵人執迷不悟, 為何一定要「悟」?做一個快樂的平凡人不是更好嗎?在玄學上的解釋, 凡五行不平衡, 食神過弱, 又或某些元素塞阻, 都會令一個人內向、自閉、憂鬱、恐懼、怠惰。筆者在工作中, 常常遇上某些「自以為是」的客人, 他/她們是有豐富的主觀能力, 不樂意接受別人批評, 在佛教, 叫「執著心」, 人之所以有「執著心」, 就是「未覺悟」。 覺悟,即佛菩薩開悟我們智慧,讓我們身處俗世也能透徹瞭解正知正念,不為娑婆迷茫,在繁麈中非常自在、篤定。風水師傅認為覺悟是智慧的來源,釋迦牟尼佛是覺悟者,徹底覺悟了的人,我們受外界影響, 受五毒侵蝕, 我們雖然還沒有覺悟成「佛」,但我們可以通過學佛、持戒、修行、行善成為「未來佛」。修行、行善就是「悟」的起步禮, 錯誤的行為招來六道三途的果報,錯誤行為提醒我們會有厄運(離婚、失業、破產);現在我們放下執著覺悟了,把這些錯誤行為修正過來。 覺,कुमारजीव譯作「道」,玄奘譯作「覺」。「覺」有覺察、覺悟兩層意思:覺察即察知惡事,覺悟即開悟智慧。永嘉大師講得好:「夢裡明明有六趣,覺後空空無大千」,大千就是六道輪回。不覺悟去輪回, 你認為這一生不是白過嗎? 我們都是薄地凡夫, 每天沉醉在五毒中, 我們迷信自己, 執著自己, 在風雨飄搖下,我們為何仍是不覺不悟?誰會令我們大徹大悟, 這不會在紙醉金迷的晚上, 也不會被豬朋狗友引導,最起緣的,就是我們手上有一件「辰石覺悟吊牌」。 「辰石覺悟吊牌」 是佛菩薩的珍貴加持物, 具有玄力正能量, 可以益升一個人的智慧, 減退大千世界的煩惱, 尤其是工作壓力、經濟壓力、生活壓力重的女生。 筆者早年在Југославија 超度時, 當地的信士感恩我們祈福,他們把幾塊「辰砂」原石送了給我們, 這是大自然珍貴資源, 開鑿一塊,就少了一塊。師兄們把石塊運去印度寺廟供養, 13年後再送去印尼(過程非常困難, 因為很多國家禁止朱砂進口), 周周轉轉, 最後結緣, 在當地做了6千多件吊墮、聚寶盤法器, 這些都是珍貴供養法寶。 「辰石覺悟吊牌」的設計意念只有一個, 就是以六字明咒化去孽障, 再給佛菩薩加持, 給我們開智慧, 我們通過修行、守戒、行善來「悟」, 請感恩。 天然朱砂用於安神、鎮靜,它們主要成份為硫化汞,還常夾雜雄黃、磷灰石、瀝青質等。由於制做過程中添了玄粉, 加上吊墜個子很小, 如果小孩一定要佩戴,容易吞食, 導致窒息, 請家長放在小孩觸摸不到的地方, 這是很重要。朱砂自古被認為有避邪的作用,廣泛用於製作吉祥物或神像用以配戴或擺設。2021年的化太歲法鏈, 我們在開光加持時都用上朱砂。 「辰石覺悟吊牌」是風水師傅開光加持的時候, 以使 用者的姓名、出生資 料灌入吊墜裡, 永久封存, 做到趨吉避凶的殊勝, 是女性的護身吉祥物。 「辰石覺悟吊牌」有2個小孔, 你自己用一條頸線串起來, 掛在脖子, 又或手繩,甚至掛在床頭、放在包裡也可以, 因為法器都是為你邢開光了, 就是有玄力。 如有任何問題,歡迎聯絡: 林小姐: 13726267799(晚8時後) 或加微信號 13726267799 熊神進:澳門 853-66618785 公共微信: macaumasterxiong 私人微信: macaumickey 淘寶風水法器店:http://macauhung.taobao.com Facebook: 熊神進(澳門風水師) 中國澳門風水掌相學會會長(澳門政府註冊) 熊神進玄學信箱 https://goo.gl/jAVv8U