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)

          ...

    }

  • 相关阅读:
    asp.net mvc简单分页实例
    aspnetpager使用介绍
    sql server 横向转丛向及FOR XML PATH使用
    js apply使用
    js call使用
    C# JavaScriptSerializer 序列化集合
    【BZOJ4103】[Thu Summer Camp 2015]异或运算 可持久化Trie树
    【BZOJ4177】Mike的农场 最小割
    【BZOJ4205】卡牌配对 最大流
    【BZOJ4358】permu kd-tree
  • 原文地址:https://www.cnblogs.com/maypen/p/6992759.html
Copyright © 2011-2022 走看看