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

Debugging 如何查看Go程序测试代码的堆栈跟踪?,debugging,testing,go,Debugging,Testing,Go,我使用Go的原生测试工具(Go-test)编写测试。但是当测试由于测试代码中的错误而失败时,由于缺少堆栈跟踪或任何其他上下文信息,我真的无法调试它 甚至,测试代码需要一个上下文对象t,因此在正常模式下运行测试代码并不是一件简单的工作 调试测试代码的最佳实践是什么?您可以使用t.Log()来记录有关测试用例的信息——如果测试用例失败或运行go test-v 您还可以使用panics在测试中断言某些状态——如果测试出现panics,您将在控制台中看到跟踪 我不知道您是否希望签入包含此代码的代码,但对

我使用Go的原生测试工具(
Go-test
)编写测试。但是当测试由于测试代码中的错误而失败时,由于缺少堆栈跟踪或任何其他上下文信息,我真的无法调试它

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

调试测试代码的最佳实践是什么?

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


您还可以使用panics在测试中断言某些状态——如果测试出现panics,您将在控制台中看到跟踪

我不知道您是否希望签入包含此代码的代码,但对于一次性调试,PrintStack可能会有所帮助

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

t.Log(string(debug.Stack()))
文件在这里


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

不,这不起作用。因为在测试模式下,它不显示常规日志。我必须使用<代码> FMT < /Cord>包来打印一些东西。您可以考虑在代码集中时轻松访问堆栈跟踪。