2

我继承了一个 Go 项目,该项目由许多通用文件、一个库、两个可执行文件和理论上的测试套件组成。测试套件是在事后编写的。但我不喜欢我发现的唯一设置方法是相当难吃

我正在使用 Ginkgo,这是我的起始目录结构

  • 组件1/组件1.go
  • 组件2/组件2.go
  • cmd1/cmd1.go
  • cmd2/cmd2.go
  • project_suite_test.go
  • component1_test.go

每个 cmd?.go 文件都会被编译成一个单独的可执行文件。

我想要的是一个多文件测试套件,通常每个组件一个文件。我应该把文件放在哪里,这样go test才能找到并运行所有文件,而不会将它们留在项目的根目录中?

4

3 回答 3

2

ginkgo init并将ginkgo bootstrap设置您的测试。ginkgo -r将递归运行所有测试。

于 2014-09-24T02:58:38.157 回答
1

原因: Ginkgo 命令只有在您实际通过 ginkgo 引导您的项目时才有效。

选项: 要使用它,您必须在终端中转到您的测试目录并运行

ginkgo init:初始化项目:

ginkgo bootstrap:这将生成带有测试套件配置的新文件

ginkgoginkgo test:这现在将能够基于您新生成的文件运行测试,因为这就是它试图搜索的内容。

或者:

如果您想将测试保存在子文件夹中,例如 test,然后运行

go test ./...

将尝试在每个文件夹中运行测试,即使是那些不包含任何测试的文件夹,因此会有 ? 在非测试文件夹的后续报告中。

跑步

go test ./.../test

而是只针对您的测试文件夹,因此有一个干净的报告只关注您的测试文件夹。

您也可以使用'go run $(ls *.go)'来运行给定文件夹中的所有文件。请注意,您在 () 大括号中有正则表达式。

如果您想根据正则表达式中所需的目录在不同的路径更新路径中运行测试

于 2021-05-14T12:15:16.007 回答
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
于 2014-09-16T23:32:30.967 回答