1. 程式人生 > >一次測試即學習的案例

一次測試即學習的案例

icon dsm png RM wiki one https log image

一般工程人員都知道 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 時也都會報錯,看起來又學到一個新的知識了呢

一次測試即學習的案例