單元測試的藝術
附上github連結:https://github.com/ryanGTR/art-of-unit-test-in-java
why
最近想好好學習「遺留系統」重構的方法,由於我是JAVA programmer,所以嘗試使用 Junit 5 與mockito 3 好好練習一下書中的範例程式。
how
其實一開始想要好好寫的時候有發現不容易學習的地方,我不夠熟悉Junit與mockito,所以找了Udemy 上找了Learn Java Unit Testing with Junit & Mockito in 30 Steps 這門課學習一些基本知識與範例,蠻推薦的(不過講師非英美人),後續再花點時間學習最新版的 junit與mockito的API做調整就好了。
這次練習最大的收穫是,好像終於稍微分得清楚 stub 與mock,真心覺得這個有點難克服,mockito的使用上是還蠻難區分出來的(mockito根本沒有stub這個詞呀!)
Stub是控制回傳值,Mock是關注驗證方法,突然明白書內說專案大部分專案上都是用Stub居多(但是在寫心得的我還是有點心虛)
我是有上91哥的「針對遺留代碼加入單元測試的藝術」,上課內容也是與單元測試有強烈關係,非常推薦,很多觀念與實務上會遇到的問題老師在這門課會說明很多,但是最推薦老師的line群啦!這門課需要發問很多東西,老師會常常回line的問題(感動)
Conclusion
建議的學習策略大致上就是
- junit
- mockito (推一下 Learn Java Unit Testing with Junit & Mockito in 30 Steps)
- 單元測試的藝術
- 91的「針對遺留代碼加入單元測試的藝術」(必上)
推薦一下額外的補充資料
- The Art of Unit Testing, 3rd Edition(沒錯!3版用nodejs,有機會再看能不能翻成java版)
- Effective Unit Testing(簡中:有效的單元測試) 這本在講說什麼樣的單元測試是不好的
- Dinesh Varyani 的 mockito 3 教學(這個我沒有看,但是他有教Stubbing Void Method的方法,我會找時間快速看完)