dongzhiman2162 2018-08-09 11:27
浏览 52
已采纳

从VS代码到终端测试不可重复的输出

Having the go extension in VScode, benchmarking a method is a matter of clicking on [run benchmark] and immediately you have the output of it in a vscode console followed by the command that ran plus the output:

Running tool: /usr/local/bin/go test -benchmem -run=^$ github.com/zyxan/benchmarks -bench ^BenchmarkRandomStringGeneration2$

goos: darwin
goarch: amd64
pkg: github.com/zyxan/benchmarks
BenchmarkRandomStringGeneration2-4      10000000           147 ns/op          80 B/op          3 allocs/op
PASS
ok      github.com/zyxan/benchmarks 1.654s
Success: Benchmarks passed.

Now if I want to reproduce such command on my terminal I literally just copy it

/usr/local/bin/go test -benchmem -run=^$ github.com/zyxan/benchmarks -bench ^BenchmarkRandomStringGeneration2$

Paste it on my terminal session results in the following output:

❯ /usr/local/bin/go test -benchmem -run=^$ github.com/zyxan/benchmarks -bench ^BenchmarkRandomStringGeneration2$
zsh: no matches found: -run=^$

Why is that discrepancy caused?

  • 写回答

1条回答 默认 最新

  • dongshan4549 2018-08-09 11:41
    关注

    If you are using vs-code then you can use vs-code terminal provided by same to run the command and it will show the output of benchmark using the same command. It will parse the command.

    go test -benchmem -run=^$ github.com/zyxan/benchmarks -bench ^BenchmarkParsingJSON$
    

    Above command is used in vs-code terminal installed on windows.

    As @Peter suggested on linux terminal you should parse the shell command using single inverted commas as

    go test -benchmem -run='^$' github.com/zyxan/benchmarks -bench '^BenchmarkRandomStringGeneration2$'
    

    Inside -run flag you need to pass the regex flag.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?