如何查看Go程序测试代码的堆栈跟踪?

时间:2013-11-03 20:05:13

标签: debugging testing go

我使用Go的本机测试工具(go test)来编写测试。但是当由于测试代码中的错误导致测试失败时,由于缺少堆栈跟踪或任何其他上下文信息,我实际上无法对其进行调试。

甚至,测试代码需要一个上下文对象t,因此在正常模式下运行测试代码并不简单。

调试测试代码的最佳做法是什么?

3 个答案:

答案 0 :(得分:4)

您可以使用t.Log()记录有关测试用例的信息 - 如果测试用例失败或运行go test -v

,go将显示该输出

您还可以使用恐慌来确定测试中的某些状态 - 如果测试发生混乱,您将在控制台中看到跟踪。

答案 1 :(得分:2)

我不知道你是否想用它来检查代码,但是对于一次性调试,PrintStack可能有所帮助。 http://golang.org/pkg/runtime/debug/#PrintStack

答案 2 :(得分:0)

您可以通过这种方式记录堆栈跟踪

t.Log(string(debug.Stack()))

文档在这里https://golang.org/pkg/runtime/debug/#Stack

它比PrintStack更好,因为它不会干扰常规测试日志。

相关问题