我继承了一个Go项目,该项目由许多常见文件,各种库,两个可执行文件以及理论上的测试套件组成。测试套件是在事后编写的。但我不喜欢我设置的唯一方法是相当不合适
我正在使用Ginkgo,这是我的起始目录结构
每个cmd?.go文件将被编译为单独的可执行文件。
我想要的是一个多文件测试套件,通常每个组件一个文件。我在哪里放置文件以便go test
找到并运行所有文件,而不将它们留在项目的根目录中?
答案 0 :(得分:2)
ginkgo init
和ginkgo bootstrap
将设置您的测试。 ginkgo -r
将以递归方式运行所有测试。
答案 1 :(得分:0)
您可以在根目录中使用go test ./...
,它将进入子文件夹并执行测试:
component1/component1.go
component1/component1_test.go
component2/component2.go
component2/component2_test.go
cmd1/cmd1.go
cmd1/cmd1_test.go
cmd2/cmd2.go
cmd2/cmd2_test.go
答案 2 :(得分:0)
原因: Ginkgo 命令仅在您实际通过 Ginkgo 引导您的项目时才有效。
选项: 要使用它,您必须在终端中转到您的测试目录并运行
ginkgo init
: 初始化项目:
ginkgo bootstrap
:这将生成带有测试套件配置的新文件
ginkgo
或 ginkgo test
:现在可以根据新生成的文件运行测试,因为这就是它要搜索的内容。
或者:
如果您想将测试保存在子文件夹中,请说 test,然后运行
go test ./...
将尝试在每个文件夹中运行测试,即使是那些不包含任何测试的文件夹,因此有一个 ?在非测试文件夹的后续报告中。
运行
go test ./.../test
相反,它只会针对您的测试文件夹,从而获得一份仅针对您的测试文件夹的干净报告。
您也可以使用 'go run $(ls *.go)'
来运行给定文件夹中的所有文件。
请注意, () 括号内有正则表达式。
如果您想根据正则表达式中所需的目录在不同的路径更新路径中运行测试