go test 怎么做测试

最近在用go语言编程。相对于c/c++等其他编程。

go的测试代码一般都是同在在对应源码所在文件路径。

如果是一个大的工程。假设工程名为work ,所在的路径在$GOPATH/work下

如:

main.go

cli --|

       command_cli.go

cmd-|

       web_handler.go

等等

其对应的go test文件是这样的:

main.go

main_test.go

cli--|

     command_cli.go

     command_cli_test.go

cmd--|

      web_handler.go

      web_handler_test.go

下面看如何做单元测试。

1、go test

在所在工程文件下 go test则是测试当前文件夹下所有测试用例。

首先进入$GOPATH/work下 输入go test就是在当前 main_test.go

2、go test -v

显示测试通过和不通过的所有测试结果。

3、go test  command_cli_test.go测试某个测试文件

在这个时候可能存在因为没有main函数。所以需要输入参数。

也就是会提示说command-in-argument的情况

因为1、并不是所有的测试是单元测试。2、当前功能函数不依赖于"ENV",只是需要输入参数

解决办法

1、设置全局环境变量:

var envSetting = os.Getenv("TEST_ENV")

然后在init输入参数

func init(){

    flags.Parse()

    myEnv = *envFlag

    //...

}

2、打桩main .如

var flagvar ini

func init(){

  flag.IntVar(&flagvar, "flagname", 1234, "help for flagname")

}

func main(){

     flag.Parse()

     submain(flag.Args)

}

func submain(args [] string){

  ...

}

测试main_test.go时

func TestSomething(t *testing.T){

  flagvar = 23

      args := [] string{"a","b","c"}

      submain(args)

      ...

}

原文地址:https://www.cnblogs.com/maypen/p/6992759.html