gpt4 book ai didi

testing - 将 revel 测试组织成子包

转载 作者:IT王子 更新时间:2023-10-29 02:21:58 27 4
gpt4 key购买 nike

我们目前正在与一个 revel 项目合作,测试的数量已经失控。我想在 tests 目录下创建一些包,以将 Controller 测试与模型测试等分开(例如 tests/controllers/, tests/型号/等)。

当我执行此操作时,revel 测试命令将停止查看这些文件。

我在网上找到了使用 ... 跟踪我的测试命令的建议,但是当我这样做时,我收到一条错误消息,提示它无法导入我的项目。

这是可能的,还是所有测试文件都必须在 tests 目录中?如果可能,您如何在子包中运行测试?

最佳答案

您可以将测试本身移动到一个可导入的包中(即不在 _test.go 文件中),然后使用它们两次。子目录中的 _test.go 文件可以是这样的:

package subdir_test

import "github.com/blah/project/parent/subdir/tests"

func TestPackage(t *testing.T) {
tests.Run(t)
}

使用 TB.Run你可以使用 go test 命令行参数让事情变得更好:

package tests // subdir

import "testing"

func Run(t *testing.T) {
for _, test := range testCases { // or whatever
test.Run(t)
}
}

当然父目录也可以直接调用子目录的Run方法:

package parent_test

import (
"testing"
p "github.com/blah/project/parent/tests"
s "github.com/blah/project/parent/subdir/tests"
)

func TestPackage(t *testing.T) {
p.Run(t)
}

func TestSubPackages(t *testing.T) {
s.Run(t)
}

我建议避免使用 go list ./... 等的变体,因为很多工具并没有真正准备好优雅地处理它(例如,以覆盖率运行它不会产生单一的组合报告,使大型项目复杂化,它还列出了可能并不总是有意义的 vendor 代码)

关于testing - 将 revel 测试组织成子包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44029345/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com