一次測試即學習的案例
一般工程人員都知道 TDD 的使用方式,也明白 UnitTest 對於程式碼品質有著良好的保護
但比較少去探討的另一個好處應該是「學習」這件事了
雖然一般來說我們寫 Testing 其實是針對已知的事物(Business logic)去做測試與保護
比較少做未知的探索測試,但在一般有寫 Testing 情況下,還是有機會學習的 (所以還是鼓勵大家多多寫測試 )
以下我分享一個測試即學習的案例給各位小夥伴
這個案例其實很簡單,我寫了一個 UnitTest 想要測試 EPPlus 在讀取完我建立的 Excel 範本後
可以正確的判斷某個 Cell 是否有正確設置 Dropdownlist。
Excel 範例大致是長這樣
來看看 EPPlus 是如何將 Dropdownlist 加入到 Cell 裡
有興趣的同鞋可以參考 : https://github.com/JanKallman/EPPlus/wiki/Data-validation
接下來第一步是先寫下「預期的測試」
從官方的範例來看,在這裡我直覺的認為設置的公式應該在 Cell 裡,為什麼?
原因是我在這裡想要驗證的僅僅是 A2 Cell 是否有符合預期的設置
看起來跟預期的不一樣,也可以看到該欄位的 Formula 是空的
接下來看看是不是在 Cell 的 DataValidation 裡
可以看到 DataValidation 裡並沒有相關的屬性可以使用
最後可以看到,其實加入後的 DataValidation 是放在 sheet 的DataValidations屬性中
可以很清楚的看到我們先前設置的公式就在這裡面
從這一步一步當中,相信各位應該有發現到,從一開始的猜想試錯當中,我們發現也學習到了 EPPlus 在設置完 Cell 的 DataValidation 後,其實在原本的 Cell 上是不存在任何資訊可以去驗證我們是否成功的,最後才學到原來相關資訊是存在 Sheet 的 DataValidations 裡頭
以上,就是一個簡單的測試即學習案例。不曉得大家有沒有類似的體驗呢?
註:後來在寫這篇範例時發現到,如果我手動在 Excel 上設置 DataValidation 而不是透過 EPPlus 套件設置的話,在程式裡是完全找不到的。在取得 DataValidations 時也都會報錯,看起來又學到一個新的知識了呢