Fly*_*ley 2 unit-testing go delve
我的项目中有两个测试,我想构建一个测试,将生成的二进制文件放在一个容器中,运行它,然后附加一个调试器。
这可能吗?
package dataplatform
import "testing"
func TestA(t *testing.T) {
// test A
}
func TestRunCommand(t *testing.T) {
// Test B
}
Run Code Online (Sandbox Code Playgroud)
icz*_*cza 13
您可以使用-run <regexp>来限制(过滤)要运行的测试。因此,例如,如果您只想运行TestA()测试,您可以这样做:
go test -run TestA
Run Code Online (Sandbox Code Playgroud)
实际上,上面将运行名称包含的所有测试TestA,因此明确地说,它将是:
go test -run ^TestA$
Run Code Online (Sandbox Code Playgroud)
要不运行测试但生成测试二进制文件,您可以使用以下-c选项:
go test -c
Run Code Online (Sandbox Code Playgroud)
这不会运行测试,而是编译一个二进制文件,在执行时将运行测试。
问题是你不能组合这些选项,例如运行
go test -c -run TestA
Run Code Online (Sandbox Code Playgroud)
将生成一个二进制文件,执行时将运行所有测试。
事实是,生成的二进制文件接受与 相同的参数go test,因此您可以传递-run TestA给生成的二进制文件,但必须在参数前加上test:
这些标志中的每一个也可以通过可选的“测试”来识别。前缀,如 -test.v。然而,当直接调用生成的测试二进制文件('go test -c' 的结果)时,前缀是强制性的。
因此,如果生成的测试二进制文件的名称是my.test,请运行它:
./my.test -test.run TestA
Run Code Online (Sandbox Code Playgroud)
有关更多选项和文档,请运行go help test或访问官方文档:
以及相关部分:
| 归档时间: |
|
| 查看次数: |
6303 次 |
| 最近记录: |