为Go单元测试声明'static'变量

时间:2017-01-24 18:43:15

标签: unit-testing go

我有几个包和他们的单元测试。每个单元测试打开一个端口并监听它。顺序运行这些测试会导致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

0 个答案:

没有答案
相关问题