我有几个包和他们的单元测试。每个单元测试打开一个端口并监听它。顺序运行这些测试会导致port in use
错误。
我需要的是与C ++中的static
变量类似的东西。一个计数器变量,它将在每个单元测试调用中保留其值。我将为每个单元测试打开后续端口。
我这样做是为了打开Nomad的后续端口。他们已经在代码库中使用它(https://github.com/hashicorp/nomad/blob/master/testutil/server.go#L30),但是在每次单元测试时都不会保留偏移量。
以下是重现问题的示例代码:
A.go
package a
var Offset uint64
A_test.go
package a
import "testing"
func TestVar(t *testing.T) {
Offset = Offset + 1
t.Log(Offset)
}
B_test.go
package b
import (
"testing"
"github.com/test/test/a"
)
func TestVar(t *testing.T) {
a.Offset = a.Offset + 1
t.Log(a.Offset)
}
运行测试:
$ go test -v ./...
=== RUN TestVar
--- PASS: TestVar (0.00s)
A_test.go:7: 1
PASS
ok github.com/test/test/a 0.005s
=== RUN TestVar
--- PASS: TestVar (0.00s)
B_test.go:11: 1
PASS
ok github.com/test/test/b 0.007s