zoukankan      html  css  js  c++  java
  • 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)

          ...

    }

  • 相关阅读:
    线段树小结
    线段树 区间合并
    线段树
    线段树离散化+区间修改
    线段树模板

    geatpy
    基于Anaconda 安装 geatpy 和 tensorflow
    Python 求“元组、列表、字典、数组和矩阵”的大小
    np.array()和np.mat()区别
  • 原文地址:https://www.cnblogs.com/maypen/p/6992759.html
Copyright © 2011-2022 走看看