4 回答
TA贡献2051条经验 获得超10个赞
我怀疑错误信息:
Unable to start NATS Server in Go Routine
具有误导性。关于 Go 例程的部分可能只是它如何尝试启动 NATS 服务器的实现细节。我怀疑服务器无法启动,因为您在选项中对端口进行了硬编码,并且因为多个测试包可能正在并行运行。只有一个测试包能够绑定到端口来启动 NATS 服务器,所有其他测试包都将失败。
标志上的文档go test说:
-parallel n
Allow parallel execution of test functions that call t.Parallel.
The value of this flag is the maximum number of tests to run
simultaneously; by default, it is set to the value of GOMAXPROCS.
Note that -parallel only applies within a single test binary.
The 'go test' command may run tests for different packages
in parallel as well, according to the setting of the -p flag
(see 'go help build').
除非您在给定的测试套件中有并行测试(我假设您没有),否则问题可能是并行运行的不同包。按照上面末尾的线索,让我们看看构建标志:
-p n
the number of programs, such as build commands or
test binaries, that can be run in parallel.
The default is the number of CPUs available.
这是来自“编译包和依赖项”文档。请注意,您可以将构建标志和测试标志传递给go test:
$ go test -h
usage: go test [build/test flags] [packages] [build/test flags & test binary flags]
Run 'go help test' for details.
所以考虑跑步go test -p 1 ./...。或者,将选项传递给RunServer函数,允许多个选项安全地并行发生。
TA贡献1765条经验 获得超5个赞
每次测试它可能已经启动了一个服务器。没有 goroutine 就无法同时运行。这个错误实际上没有任何意义 - Go 中的任何东西都必须能够在 goroutine 中运行,事实上一切都在goroutine 中运行(甚至main
),所以不清楚他们在这里真正想说的是什么(我会绝对建议打开有关它的错误报告,因为该错误消息很糟糕)。同时,您可以避免go test
同时运行-parallel 1
(如 中所示go help testflag
),这可能会有所帮助。
- 4 回答
- 0 关注
- 166 浏览
添加回答
举报