2022年2月6日 星期日

單元測試的藝術 - Chapter 2.4 其他測試框架功能

這邊記錄一下書中介紹的其他可能會用到的框架功能。

[Ignore]語法


如上圖,作者說通常不會用到,我想也是,

通常還沒開發完的程式碼,大概都是用註解去處理居多吧?

但使用這個有個好處,至少可以提醒自己有一段code還沒被完成,以及留下未完成原因,

讓後面接手的人看測試總管就知道應該是什麼問題,

而不像註解掉的程式碼,放久了就忘了。


流利語法我就先跳過了,

儘管很方便使用,但我認為閱讀性是最該被考慮的,

畢竟下一次看這段code的人很可能就是一兩個月後的自己,

如果還需要花時間理解才能知道這段code的意義,

那不如不要節省那麼一點點開發code的時間,

多花點心思把正確的function名稱用上就好了。

[Category]語法


這個語法可以用來分類不同類型的測試,

例如需要花比較多時間執行或比較短時間的測試,

用此來分開不同類型的測試,

但是我是直接在Visual Studio執行,似乎沒辦法指定分類完的測試去執行,

目前沒這個需求,所以也沒去驗證。

看來只能透過NUnit的UI測試器才能了。

驗證回傳值以外的數值

前面驗證的都是return回來的值,

但程式中往往沒有那麼單純,有可能是沒有回傳值,但會改變某些參數,

又或者改變的值有好幾個,那麼就需要驗證這些非回傳值的數值了。

照著書中舉例:


當IsValidLogFileName()被執行時,WasLastFileNameValid會被設定成false,

如果IsValidLogFileName()順利執行到最後,則WasLastFileNameValid會被設定成true,

這樣這個被測試物件就能夠記憶上一次的執行結果。

那麼測試時如何側這個值呢?

其實也沒多困難...

就真的只是把該屬性(WasLastFileNameValid)呼叫出來比較而已。

使用工廠方法來初始化被測物件

可以發現上面的例子都是以MakeAnalyzer()去建立物件,

這麼做的好處是,如果被測物件要進行改變,

可能是增加了建構參數甚至是更改類別,就不用每個TestMethod都去更改,

只需要更改MakeAnalyzer()內的new即可,

同時可以保證每個待測物件的建立過程都會是相同的,

提高了可維護姓。

沒有留言:

張貼留言

社會新鮮人如何投資?

我的觀點是,在 沒有很多 本錢 的情況下, 別寄望每個月幾千元放到股票或者最近很夯的高股息ETF就能讓你致富, 先投資自己,讓自己的本業收入提高吧。