当您使用返回类型为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