在go中构建单个测试

时间:2018-04-20 07:13:23

标签: unit-testing go delve

我的项目中有两个测试,我想构建一个测试,将生成的二进制文件放在容器中,运行它,然后附加一个调试器。

这可能吗?

package dataplatform

import "testing"

func TestA(t *testing.T) {

    // test A
}

func TestRunCommand(t *testing.T) {

    // Test B
}

1 个答案:

答案 0 :(得分:2)

您可以使用-run <regexp>来限制(过滤)要运行的测试。因此,例如,如果您只想运行TestA()测试,您可以这样做:

go test -run TestA

实际上上面会运行名称中包含TestA的所有测试,所以要明确,它将是:

go test -run ^TestA$

要不运行测试但生成测试二进制文件,您可以使用-c选项:

go test -c

这不会运行测试,而是编译一个二进制文件,执行时将运行测试。

问题在于您无法合并这些选项,例如:运行

go test -c -run TestA

将生成一个二进制文件,在执行时将运行所有测试。

事实是生成的二进制文件接受与go test相同的参数,因此您可以将-run TestA传递给生成的二进制文件,但是必须在参数前加test

  

这些标志中的每一个都通过可选的“测试”识别。前缀,如-test.v.但是,当直接调用生成的测试二进制文件('go test -c'的结果)时,前缀是必需的。

因此,如果生成的测试二进制文件的名称为my.test,请按以下方式运行:

./my.test -test.run TestA

有关更多选项和文档,请运行go help test,或访问官方文档:

Command Go

相关部分:

Command Go: Testing flags