一尘不染

包测试的串行执行

go

我已经为Web API实现了多个软件包,每个软件包都有自己的测试用例。使用go test ./api/pkgname测试通过每个包装时通过。如果我想一次用go test ./api/...测试案例运行所有测试,则总是失败。

在每个测试案例中,我使用来重新创建整个架构DROP SCHEMA public CASCADECREATE SCHEMA public并应用所有迁移。测试套件随机报告错误,说不存在关系/表,所以我猜每个测试套件(每个程序包)都以某种方式并行运行,从而弄乱了数据库状态。

我试图通过一些测试标志,例如go test -cpu 1 -parallel 0 ./src/api/...没有成功。

这里的问题可能是并行运行的测试吗?如果是的话,如何强制串行执行?

更新:

目前,我使用此替代方法来运行测试,但我仍然想知道是否有更好的解决方案

find <dir> -type d -exec go test {} \;

阅读 228

收藏
2020-07-02

共1个答案

一尘不染

正如其他人指出的那样,-parallel不能完成任务(它仅在程序包中起作用)。但是,您可以使用标志-p = 1来依次进行软件包测试。在此处记录:

http://golang.org/src/cmd/go/testflag.go

但是(不是)不在命令行上,不能获得帮助等。我不确定它是否会坚持下去(尽管我认为如果删除了它,则-parallel应该是固定的。)

2020-07-02