這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
go test命令參數問題
在使用go test對go代碼進行單元測試的時候,遇到關於命令參數的問題,google了一下,沒有找到很好的說明,其實就是一些細節而已。
問題是這樣的,在進行單元測試的時候,我希望輸入一些命令列參數來控製程序的運行。
參考go官方文檔,只需要在go test後面加上-args和參數就可以了
例如
go test -args -classpath E:\testcase HelloWorld
也就是上面的
-classpath E:\testcase HelloWorld
是我輸入的參數,但是卻又這樣的錯誤:
flag provided but not defined:-classpath
意味著go test把-classpath也當成自己的參數去解析了,而不是把-args後面的所有字串都當成是我程式輸入的參數
這沒有辦法,我只好在程式中吧-classpath更改成classpath,於是命令列如下
go test -args classpath E:\testcase HelloWorld
這樣勉強解決了問題,卻因為go test的原因改變了我的來源程式。
另外,當我希望列印調試資訊,也就是為go test增加-v參數的時候,也遇到一個小問題,我是這樣輸入的
go test -v -args classpath E:\testcase HelloWorld
在原始碼這,我通過os.Args去擷取命令列參數,但是-v會被當成我命令列的一個輸入,而不是被忽略。原則上來說,應該是-args以後才被當成是命令列參數,而事實上go test沒有完成這個效果。於是我又只能修改來源程式以完成測試。
go test過程中,需要使用命令列參數的情況比較少,但是我還是遇到了,而且出現了一些意想不到的問題,說明go test並不是很完美。另外我是剛開始接觸go語言,也許有更好的辦法或者理解不對,這裡只是替自己做一個筆記,請多包涵。