是否可以将测试文件放在子文件夹中

时间:2014-12-15 03:26:30

标签: go

当我将模块及其测试放在同一目录中时,它可以正常工作。

- module1.go
- module1_test.go

但是当文件和测试文件的数量增加时,很难在代码中导航。

是否可以将测试放到子文件夹以获得更清晰的代码结构? 当我尝试这样做时,我得到名称空间错误。

我将文件module1_test.go放到文件夹./test

- module1.go
- test/module1_test.go

现在我在测试时遇到错误:

test/module1_test.go:8: undefined: someFunc

我的module1.go代码:

package package1

func someFunc() {

}

我的module1_test.go代码:

package package1

import (
    "testing"
)

func TestsomeFunc(t *testing.T) {
    someFunc()
}

1 个答案:

答案 0 :(得分:4)

您可以将测试放在另一个目录中,但这不常见。您的测试需要导入主题包,并且不会在主题包中访问未导出的方法。这将有效:

文件$ GOPATH / src / somepath / package1 / module1.go

package package1

func SomeFunc() {

}

文件$ GOPATH / src / somepath / package1 / test / module1_test.go

package test

import (
    "testing"
    "somepath/package1"
)

func TestSomeFunc(t *testing.T) {
    package1.SomeFunc()
}

几点说明:

  • 我将SomeFunc更改为导出的方法,以便测试可以访问它。
  • 测试导入主题包“somepath / package1”