Go語言測試中傳入命令行參數
本文展示該如何在Golang測試裡,傳入命令行(command-line)參數。
在Google搜尋 [1] 以及 Stack Overflow [2] 裡找到的答案無法在 Go 1.8.1 使用。 最後我發現這個問題 [3] 並搞清楚該如何正確地傳入參數。下面就是解答。
在Golang測試程式碼:
package goef
import (
"flag"
"testing"
)
var pkgdir = flag.String("pkgdir", "", "dir of package containing embedded files")
func TestGenerateGoPackage(t *testing.T) {
t.Log(*pkgdir)
}
注意!你並不需要在測試程式碼裡呼叫 flag.Parse() 。
你可以以如下的方法傳入命令行參數:
$ export PKGDIR=${GOPATH}/src/github.com/siongui/myvfs
$ go test -v embed.go buildpkg.go buildpkg_test.go -args -pkgdir=${PKGDIR}
注意!如果 -args 不在 go test 命令裡,測試程式碼裡的 pkgdir 字串變數會是空的。
附錄
你也可以透過 environment variable 來在Golang測試裡傳參數。
在Golang測試碼:
package goef
import (
"os"
"testing"
)
func TestGenerateGoPackage(t *testing.T) {
t.Log(os.Getenv("PKGDIR"))
}
可以以如下的方式傳參數:
$ export PKGDIR=${GOPATH}/src/github.com/siongui/myvfs
$ go test -v embed.go buildpkg.go buildpkg_test.go
Tested on: Ubuntu Linux 17.04, Go 1.8.1.
References:
[1] |
[2] |
[3] |
[4] |