關於單元測試的一些想法
近期的主要工作之一就是單元測試的編寫,對於從零開始的我來說真的是有一定難度。開一貼記錄一些單元測試方面的相關問題吧。
目前來看遇到的問題主要是如何把程式碼或功能轉化成單元測試最理想的形式,這就要求程式碼結構非常好,耦合度低。關於這點以後有經驗了再來補充。
目前比較主流的方式都是通過一些返回值或者取值來與目標期待值或閾值作對比,從而得出結論,結果與預期是否相符。中間的問題就是有些程式碼邏輯執行的過程中,很難找到這樣一個值來做判斷。基於此問題,想到了以下兩個方法:
一、把一些返回值為void型別的方法改為有返回值的方法
很多方法比如給一些成員變數賦值時,通常我們是不需要返回值的。但是在單元測試中,我們往往需要取得一些值來判斷我們的程式執行是否正常。之所以這樣修改主要是考慮到這樣對開發成本比較節約,我們只需要修改一個返回型別,並且在函式執行末尾返回我們單元測試想要用的物件即可。而程式本身的執行與邏輯並不受到影響。為了便於理解,我們可以加上註釋,註明此返回值用於單元測試。
二、專門編寫單元測試取值的程式碼
這種方法優勢在於原始碼邏輯絲毫不動,我們編寫一些專門用於單元測試取值或者運算的程式碼來協助單元測試,如最簡單的get方法。但是此方法的弊端顯而易見,除日常開發外,我們還需要花大量精力和時間去寫這些方法,額外增加了開發成本。
感覺上是方法二是比較完美的解決方案,但是我很懶,想用方法一。
三、使用反射
反射的優勢在於可以直接獲取到類,類中的成員變數及方法等等。但是將此用於單元測試,還需研究。
相關文章
- 關於 Android 單元測試Android
- 對於效能測試的一些想法,歡迎交流
- 關於 Spring-WebFlux 的一些想法SpringWebUX
- 關於軟體驗證中的單元測試
- 關於讀書分享會的一些想法
- 單元測試:單元測試中的mockMock
- 單元測試怎麼做的一些思考
- 關於測試用例的一些迷茫
- 測試 之Java單元測試、Android單元測試JavaAndroid
- 單元測試-【轉】論單元測試的重要性
- [CEO公開信] 關於管理和組織的一些想法
- 關於LCA的幾點想法
- 單元測試,只是測試嗎?
- 單元測試-一份如何寫好單元測試的參考
- 公告:關於精準測試一些雜事
- 單元測試的規範
- Apache Camel的單元測試Apache
- java中的單元測試Java
- golang單元測試Golang
- 單元測試真
- iOS 單元測試iOS
- python 單元測試Python
- 前端單元測試前端
- Flutter 單元測試Flutter
- 單元測試 Convey
- 單元測試工具
- 聊聊單元測試
- 十五、單元測試
- Go單元測試Go
- SpringBoot單元測試Spring Boot
- Jest基於dva框架的單元測試最佳實踐框架
- 程式碼重構與單元測試——重構1的單元測試(四)
- Vue 應用單元測試的策略與實踐 04 - Vuex 單元測試Vue
- 關於本書的一點想法
- 關於JavaScript跨域的若干想法JavaScript跨域
- 前端測試:Part II (單元測試)前端
- 關於 SAP Spartacus defaultCmsContentProvider 和預設 layoutConfig 的一些測試IDE
- Vue 應用單元測試的策略與實踐 02 - 單元測試基礎Vue