使用delve进行调试测试

huangapple go评论94阅读模式
英文:

Debugging tests with delve

问题

你可以使用以下命令来使用delve调试单元测试:

dlv test -- -test.run <test_name>

其中,<test_name>是你要调试的单元测试的名称。这个命令会启动delve调试器,并运行指定的单元测试。你可以在调试器中设置断点、查看变量等进行调试操作。

希望对你有帮助!

英文:

I'm using "go test -v" to run bunch of unit tests. I'd like to debug them using delve. When I try to run debugger, I get an "Can not debug non-main package" error. So, how can I debug unit tests using delve debugger ?

答案1

得分: 35

使用dlv test命令:

$ dlv test -- -test.v
输入'help'以获取命令列表。
(dlv) continue
=== RUN   TestReadFileError
--- PASS: TestReadFileError (0.00s)
=== RUN   TestReadFile
--- PASS: TestReadFile (0.00s)
[..]
PASS
进程 8014 已以状态 0 退出
(dlv) quit
进程 8014 已以状态 0 退出

你也可以使用-test.run来选择要运行的测试(就像go test -run一样)。

在内部,这与Flimzy的答案相同(它使用go test -c编译测试二进制文件),但更加简化,不会留下需要清理的.test文件。

英文:

Use dlv test:

$ dlv test -- -test.v
Type &#39;help&#39; for list of commands.
(dlv) continue
=== RUN   TestReadFileError
--- PASS: TestReadFileError (0.00s)
=== RUN   TestReadFile
--- PASS: TestReadFile (0.00s)
[..]
PASS
Process 8014 has exited with status 0
(dlv) quit
Process 8014 has exited with status 0

You can also pass -test.run to select tests to run (just like go test -run).

Internally, this is the same as Flimzy's answer (it compiles the test binary with go test -c), but more streamlined and won't leave .test files for you to clean up.

答案2

得分: 1

我不熟悉delve,但如果它可以在编译后的二进制文件上工作,只需使用-c标志编译你的测试:

    -c
        将测试二进制文件编译为pkg.test,但不运行它
        (其中pkg是包导入路径的最后一个元素)。
        文件名可以使用-o标志进行更改。

然后在输出上运行delve。

英文:

I'm not familiar with delve, but if it can work on a compiled binary, just compile your tests using the -c flag:

    -c
        Compile the test binary to pkg.test but do not run it
        (where pkg is the last element of the package&#39;s import path).
        The file name can be changed with the -o flag.

Then run delve on the output.

huangapple
  • 本文由 发表于 2017年4月13日 06:17:23
  • 转载请务必保留本文链接:https://go.coder-hub.com/43380530.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定