大佬教程收集整理的这篇文章主要介绍了测试 – 如何测试golang命令行输出,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
package main import ( "flag" "fmt" ) func main() { const ( cityDefault = "San Francisco" cityDoc = "the city you want the forecast for" ) var city string flag.StringVar(&city,"city",cityDefault,cityDoc) flag.StringVar(&city,"c",cityDoc) flag.Parse() fmt.Println(city) }
我想测试这两个:
$./myapp -c "Los Angeles" $./myapp -city "Los Angeles"
main.go
package main import ( "log" "os" ) func main() { var city string parseFlags(&city,os.Args) log.Println(city) } func parseFlags(result *string,args []string) { cityDefault := "San Francisco" switch len(args) { case 3: *result = args[2] default: *result = cityDefault } }
main_unit_test.go
package main import ( "log" "testing" ) // TestParseFlags - test our command line flags func TestParseFlags(t *testing.T) { var parseFlagsTests = []struct { flags []string // input flags to the command line expected string // expected }{ {[]string{"/fake/loc/main"},"San Francisco"},{[]string{"/fake/loc/main","-c","Los Angeles"},"--city",} for _,tt := range parseFlagsTests { var output string parseFlags(&output,tt.flags) if output != tt.expected { t.Errorf("expected: %s,actual: %s",tt.expected,output) } } }
我通常使用this package解析所有应用程序中的命令行参数.我将按如下方式构建我的代码(测试未显示,但它们通常遵循上面显示的测试要点):
main.go
package main import ( "log" "os" "myDir/cli" ) func main() { // Grab the user inputed CLI flags cliFlags := cli.FlagsStruct{} cliErr := cli.StartCLI(&cliFlags,os.Args) if cliErr != nil { log.Println("Error grabbing command line args") log.Fatal(cliErr) } // Do stuff ... }
/myDir/cli.go
package cli import "github.com/urfave/cli" // FlagsStruct - holds command line args type FlagsStruct struct { MyFlag string } // StartCLI - gathers command line args func StartCLI(cliFlags *FlagsStruct,args []string) error { app := cli.NewApp() app.Action = func(ctx *cli.Context) error { MyFlag := ctx.GlobalString("my-flag") // build the cli struct to send back to main cliFlags.MyFlag = MyFlag return nil } app.Authors = []cli.Author{ { Email: "my@email.com",Name: "Adam Hanna",},} app.Flags = []cli.Flag{ cli.StringFlag{ Name: "my-flag,f",Usage: "My flag usage goes here",Value: "myDefault",} app.Name = "myAppName" app.Usage = "My App's Usage" app.Version = "0.0.1" return app.Run(args) }
以上是大佬教程为你收集整理的测试 – 如何测试golang命令行输出全部内容,希望文章能够帮你解决测试 – 如何测试golang命令行输出所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。