如何进行单元测试出错
问题描述:
当您使用返回类型为error
的单元测试函数时,我想知道如何正确地对这个错误进行单元测试。你是否应该检查错误是零还是不是零?或者你是否应该验证错误字符串是否与期望的字符串匹配?如何进行单元测试出错
答
在大多数情况下,您可以检查错误是否不为零。
我建议不要检查错误字符串,除非绝对必要。我通常认为错误字符串只能用于人类消费。
如果您需要更多关于错误的详细信息,更好的选择是自定义错误类型。然后,您可以切换错误(类型)并查看它是否是您期望的类型。 如果您需要更多详细信息,可以使自定义错误类型包含您可以在测试中检查的值。
Go的错误只是一个具有Error() string
方法的类型的接口,因此自己实现它们很简单。 https://blog.golang.org/error-handling-and-go
答
是的我测试我的函数返回错误,并检查它,如果错误消息匹配。但这取决于你是否要检查它或只检查错误是不是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
,您可以创建另一个测试来测试是否没有错误。
我喜欢使用自定义错误类型的想法,这肯定会简化一些事情。 – GabeMeister