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

参考解析

题目来源:网易

答案:

package是Go的代码组织的基本单位,一般一个目录就是一个package,目录名就和package名不一定相同,但是引用的路径一定要写目录名。在目录名和包名不一致的时候,lint程序会帮你把包名补上去。如下所示,TestPkgHello来自于包testpkg, lint程序在pkgtest目录下找到了这个包,于是导入的方式就是testpkg “studygo/pkgtest”。

  1. package main
  2. import (
  3. "fmt"
  4. testpkg
  5. "studygo/pkgtest""testing"
  6. )
  7. //......省略部分代码
  8. func TestPkgHello(testing.T) {
  9. testpkg.PkgHello()
  10. }

一个目录里只能有一个包,一个包的所有代码,包内都是可以被访问的, 分成多个文件只是把代码分开写了而已, 不影响相互调用。当然,每个文件第一行要声明所属的package。

  1. package package-name

所以可以这么理解,路径实际上是用来找package的,如果你目录名和package名一样,那么写法上就可以简单一些,否则就要写成testpkg “studygo/pkgtest”。补充示例,如果pkgtest下面还有个目录pkgtestplus并且里面包含了另一个包testpkgplus会如何?

  1. package main
  2. import (
  3. "fmt"
  4. testpkg
  5. "studygo/pkgtest"
  6. testpkgplus
  7. "studygo/pkgtest/pkgtestplus""testing"
  8. )
  9. //......省略部分代码
  10. func TestPkgHello(testing.T) {
  11. testpkg.PkgHello()
  12. }
  13. func TestPkgHelloPlus(testing.T) {
  14. testpkgplus.PkgHelloPlus()
  15. }

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