我为Web API实现了几个包,每个包都有自己的测试用例.当使用go test ./api/pkgname
测试每个包时,测试通过.如果我想一次运行go test ./api/...
个测试用例的所有测试,那么测试用例总是失败的.
在每个测试用例中,我使用DROP SCHEMA public CASCADE
后跟CREATE SCHEMA public
重新创建整个模式,并应用所有migrations.测试套件随机报告错误,说关系/表不存在,所以我猜每个测试套件(每个包)都以某种方式并行运行,从而扰乱了DB状态.
我试着传递一些测试标志,比如go test -cpu 1 -parallel 0 ./src/api/...
,但没有成功.
这里的问题是并行运行的测试吗?如果是,我如何强制串行执行?
Update:
目前我使用这个变通方法来运行测试,但是我仍然想知道是否有更好的解决方案
find <dir> -type d -exec go test {} \;