7

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

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

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

4

3 回答 3

6

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

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

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

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

于 2019-02-19T18:31:18.377 回答
5

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

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

于 2013-11-03T20:31:54.647 回答
2

我不知道您是否想签入包含此内容的代码,但对于一次性调试,PrintStack 可能会有所帮助。http://golang.org/pkg/runtime/debug/#PrintStack

于 2013-11-03T22:14:34.333 回答