如果一个包要依赖另一个包,这个时候如何写单元测试
参考解析
题目来源:网易
答案:
package是Go的代码组织的基本单位,一般一个目录就是一个package,目录名就和package名不一定相同,但是引用的路径一定要写目录名。在目录名和包名不一致的时候,lint程序会帮你把包名补上去。如下所示,TestPkgHello来自于包testpkg, lint程序在pkgtest目录下找到了这个包,于是导入的方式就是testpkg “studygo/pkgtest”。
package main
import (
"fmt"
testpkg
"studygo/pkgtest""testing"
)
//......省略部分代码
func TestPkgHello(testing.T) {
testpkg.PkgHello()
}
一个目录里只能有一个包,一个包的所有代码,包内都是可以被访问的, 分成多个文件只是把代码分开写了而已, 不影响相互调用。当然,每个文件第一行要声明所属的package。
package package-name
所以可以这么理解,路径实际上是用来找package的,如果你目录名和package名一样,那么写法上就可以简单一些,否则就要写成testpkg “studygo/pkgtest”。补充示例,如果pkgtest下面还有个目录pkgtestplus并且里面包含了另一个包testpkgplus会如何?
package main
import (
"fmt"
testpkg
"studygo/pkgtest"
testpkgplus
"studygo/pkgtest/pkgtestplus""testing"
)
//......省略部分代码
func TestPkgHello(testing.T) {
testpkg.PkgHello()
}
func TestPkgHelloPlus(testing.T) {
testpkgplus.PkgHelloPlus()
}
不会如何,套娃就行了。建议还是名字一致比较好。 另外一个目录下只能有一个包。子目录下的包只是引用的路径不一样,包本身是独立的。