2021 年的 【#針對遺留代碼加入單元測試的藝術】梯次 8/26 00:00 開始公開報名囉,上課日期在 2021/1/9 (六)。( 8/25 下午開放給前一梯次的等待隊列學員報名,目前已有 8 位報名成功)
《我不需要看簡介就手刀報名》:https://docs.google.com/forms/d/e/1FAIpQLScEXdcziYwugx4TXwkO0zXOq6lJ110knnk-egzXM8HxhT_OUA/viewform
《這門課能幫助我解決哪些問題》:https://dotblogs.com.tw/hatelove/2020/08/21/Unit-testing-effectively-with-legacy-code-202101
雖然 #單元測試 以及 #遺留代碼 的概念是不分語言的,但是這門課我能 live demo 的語言還是有限的,目前 live demo 的語言限定在 Java, PHP, C#, Python。上課的內容、步驟、題目與解答,則也有支援 Kotlin 的版本。(期待自己能在 2021 年一月的時候,支援 node.js 的版本)
Ruby 我只能提供相關的 reference。
※ 註:如果你有預算與流程上的相關需要,可開立今年的三聯式發票,不用等到上課唷。
java stub 在 91 敏捷開發之路 Facebook 的最佳解答
敲碗敲到碗快破了嗎?是的,【#針對遺留代碼加入單元測試的藝術】今年十一月梯次,預計加入支援 #Python 與 #Kotlin 了!
課程介紹與報名:https://dotblogs.com.tw/hatelove/2020/05/08/Unit-testing-effectively-with-legacy-code-202011
—
Kotlin 本身的語言特性讓單元測試沒那麼容易寫,然而框架則優雅地解決了這問題。
Python 本身的語言特性則讓單元測試非常好寫,但因為 Python 寫法太自由,所以因應不同的寫法,要有對應不一樣的解決方式。(例如其他語言都以 class/struct 為基底, Python 跟 JavaScript 卻可以直接以 function 為基本元素)
—
#註:因為十一月梯次開始的內容同時支援 C#, Java, Kotlin, PHP, Python 五個語言,上課示範將以學員使用最多的語言進行 live coding,以及若在該 lab 不同語言可能有特別值得一提的關注點,也會額外拉出來講解。
各種語言我都會提供對應的 repository 與每個step 的 commit history, 每個段落也都有每一步的操作影片,供上課時學員可以對著 commit history 在 IDE 上練習,所以請不用擔心跟不上,或是聽懂卻無法跟著實作的問題。
重點在概念,上課或課後的實作練習,有完整的 branch, commit history (重點筆記都在 commit comments 上了),以及對應的影片可以參考。
不怕你練,怕你不練。不怕你問,怕你不問。
—
需求跟問題是中性的,是不分語言的。撇除語言特性不說,在 legacy code 上要加入單元測試,會碰到的問題萬變不離其宗,學會這個核心的概念,你就不會再怕 legacy code 了。
—
今天晚上我會把 python 的內容也補上該課程介紹中。
該梯次目前只剩下 #四個位置,錯過就等2021 吧。
java stub 在 91 敏捷開發之路 Facebook 的最佳貼文
【樓主一生平安】
#熱血,是會物以類聚的。
一位擅長 java 的同學,之前參加了我的三門培訓:
①【#針對遺留代碼加入單元測試的藝術】
②【演化式設計:#測試驅動開發與持續重構】
③【#極速開發】
他最近再把《#單元測試的藝術》看完了一遍,並將書中的 C# 範例程式碼轉成了 java,其實能自己跟著做過一遍,收穫最大的肯定是自己。
同時也造福了其他習慣用 java 的同學,在看這本書時可以更容易理解書中的意義。
2018 年是我很重要的一年,因為我把上列的三門培訓拓展到了 java, php, C# 三門語言,其中【極速開發】更是能同時用在所有 JetBrains IDE、Android Studio 以及 Visual Studio + ReSharper 上。
我自己對一門培訓要能支援到其他語言的要求很嚴格,這也是為什麼 2019 年的【#DI與AOP實戰】以及【#從重構學會設計高易用性與高彈性API】,我至今仍不支援 C# 以外的語言。
#自己強還不夠,還要能讓別人更強
#別人變強還不夠,還要能讓他發光發熱,繼續影響別人
花了一些時間,把單元測試的藝術又看了一遍,順便把 C# 程式碼轉成 Java
不過有些 Java 不支援的真的就只能讓他去了🤣 (Events, Delegates...)
https://github.com/Coffee0127/the-art-of-unit-testing
--
書中介紹了...
* 一個好的單元測試應該具備哪些特色 (可讀? 可維護? 可靠?)
* 整合測試 vs 單元測試區別
* 何謂假物件 (Fake Object) [很多人會被Library誤導XD Mock, Spy, Stub 分不清楚,很巧的我也曾是很多人的其中一個]
* 本書一再強調他不談設計,但是他推了很多書,例如 Code Complete, Clean Code
* 該如何正確面對一個要加功能但是沒有單元測試的 Legacy Code
91 哥火力支援-https://dotblogs.com.tw/…/13/priorities-for-adding-unit-test
可以加入 單元測試的藝術閱讀交流 社團跟更多人交流
https://www.facebook.com/groups/288261638343874/
--
不過最想講的,還是 9.2.3 引入外援 這章節
> 我強烈建議邀請組織外的專家來幫助導入變革
這邊的專家當然就是業界有名的點火師 Joey Chen 啦
上面說了書中介紹的這麼多東西,大部分在 單元測試實戰操練營 會提到
然而課堂上會被灌輸更多書中沒提到的 (例如:show your intention)
整體來說,我覺得是一堂 濃縮再濃縮、提煉再提煉 的必修課程
// 然後下一步就被燒到接著學 TDD,接著覺得自己寫 code 超慢跟著學急速開發
// 覺得 C# 這圈子好幸福,好多大神
按讚 91 敏捷開發之路 以獲得更多熱血課程😎
https://www.facebook.com/91agile/