搜尋

搜尋結果

你開始寫 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開發中加入你自己的測試!

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

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

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

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

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

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

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

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