當您使用返回類型爲error
的單元測試函數時,我想知道如何正確地對這個錯誤進行單元測試。你是否應該檢查錯誤是零還是不是零?或者你是否應該驗證錯誤字符串是否與期望的字符串匹配?如何進行單元測試出錯
1
A
回答
1
在大多數情況下,您可以檢查錯誤是否不爲零。
我建議不要檢查錯誤字符串,除非絕對必要。我通常認爲錯誤字符串只能用於人類消費。
如果您需要更多關於錯誤的詳細信息,更好的選擇是自定義錯誤類型。然後,您可以切換錯誤(類型)並查看它是否是您期望的類型。 如果您需要更多詳細信息,可以使自定義錯誤類型包含您可以在測試中檢查的值。
Go的錯誤只是一個具有Error() string
方法的類型的接口,因此自己實現它們很簡單。 https://blog.golang.org/error-handling-and-go
2
是的我測試我的函數返回錯誤,並檢查它,如果錯誤消息匹配。但這取決於你是否要檢查它或只檢查錯誤是不是nil
。
假設你有這樣的功能:
func returnSomeErr(input int)error{
if input > 0{
return nil
}
return errors.New("this is error message")
}
可以進行單元測試這樣的錯誤消息:
// testing tot get error message
func TestReturnSomeErr(t *testing.T){
Expected := "this is error message"
actual := returnSomeErr(-1)
if actual.Error() != Expected{
t.Errorf("Error actual = %v, and Expected = %v.", actual, test.Expected)
}
}
請注意,我用.Error()
函數來獲取錯誤消息,以便我可以將它與字符串進行比較。如果輸入數據爲> 0
,您可以創建另一個測試來測試是否沒有錯誤。
相關問題
- 1. 我如何進行單元測試openWithCompletionHandler
- 2. 如何對wxPython進行單元測試?
- 3. OpenGL如何進行單元測試?
- 4. 如何進行單元測試
- 5. Grails - 如何進行單元測試addTo *
- 6. Hadoop:如何進行單元測試FileSystem
- 7. IRepository如何進行單元測試?
- 8. 如何對IDataErrorInfo進行單元測試?
- 9. 如何進行單元測試?
- 10. 如何對rxjs5進行單元測試?
- 11. 如何進行單元測試配置
- 12. VUE運行測試單元時出錯
- 13. 使用Nunit進行單元測試給出了錯誤
- 14. Java,BigDecimal:如何對舍入錯誤進行單元測試?
- 15. 如何使用System.Windows.Threading.Dispatcher對單元進行單元測試
- 16. Silverlight單元測試。運行測試時出錯
- 17. 如何對與系統(或Android)類進行交互的單元測試方法進行單元測試
- 18. 何時使用測試腳本進行單元測試?
- 19. 當進行單元測試以及何時集成測試
- 20. 如何對子進程進行單元測試.CalledProcessError
- 21. 如何對二進制方法進行單元測試?
- 22. 單元測試...如何改進它
- 23. Ng-click - 如何對行爲進行單元測試
- 24. 使用Cocoapods進行Xcode單元測試
- 25. 使用Mockito進行單元測試
- 26. 在XSB Prolog中進行單元測試?
- 27. 在C++中進行單元測試
- 28. 使用JMS進行單元測試(ActiveMQ)
- 29. 使用V8進行Javascript單元測試
- 30. 使用Clojure進行單元測試Java
我喜歡使用自定義錯誤類型的想法,這肯定會簡化一些事情。 – GabeMeister