我已经为 Web API 实现了几个包,每个包都有自己的测试用例。当使用 go test ./api/pkgname
测试每个包时,测试通过。如果我想用 go test ./api/...
一次运行所有测试,测试用例总是失败。
在每个测试用例中,我使用 DROP SCHEMA public CASCADE
和 CREATE SCHEMA public
重新创建整个架构并应用所有迁移。测试套件随机报告错误,说关系/表不存在,所以我猜每个测试套件(每个包)以某种方式并行运行,从而弄乱了数据库状态。
我试图传递一些测试标志,例如 go test -cpu 1 -parallel 0 ./src/api/...
没有成功。
这里的问题可能是并行运行的测试,如果是,我该如何强制串行执行?
更新:
目前我使用此解决方法来运行测试,但我仍然想知道是否有更好的解决方案
find <dir> -type d -exec go test {} \;
最佳答案
正如其他人指出的那样,-parallel 不能完成这项工作(它只适用于包中)。但是,您可以使用标志 -p=1 来连续运行包测试。这记录在这里:
http://golang.org/src/cmd/go/testflag.go
但是(afaict)不在命令行上,去帮助等等。我不确定它是否会留下来(尽管我认为如果它被删除,-parallel 应该被修复。)
关于testing - 包测试的串行执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15721238/