如果一个包要依赖另一个包,这个时候如何写单元测试

本文阅读 2 分钟
首页 golang 正文
题目来源:网易

答案:ORVR

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()
}

不会如何,套娃就行了。建议还是名字一致比较好。 另外一个目录下只能有一个包。子目录下的包只是引用的路径不一样,包本身是独立的。

本文来自投稿,不代表本站立场,如若转载,请注明出处:
了解中间件吗?有什么好处?
« 上一篇 09-17
Go 高并发的特点
下一篇 » 09-17

发表评论

发表评论