Go 从项目根目录运行子文件夹的基准测试
我有一个带有二进制文件的项目,其入口点位于Go 从项目根目录运行子文件夹的基准测试,go,benchmarking,Go,Benchmarking,我有一个带有二进制文件的项目,其入口点位于/cmd//main.go。 我在/cmd//main\u test.go中添加了一个基准测试 现在我想从存储库根目录执行这个基准测试。 我尝试过以各种方式执行类似于go test-bench=./cmd//main的操作(例如go test-bench=./cmd//main\u test.go或go test-bench=./cmd/),但我无法让它工作 我经常遇到的错误是: 无法在/home//Go/src/github.com///code> 这
/cmd//main.go
。
我在/cmd//main\u test.go
中添加了一个基准测试
现在我想从存储库根目录执行这个基准测试。
我尝试过以各种方式执行类似于go test-bench=./cmd//main
的操作(例如go test-bench=./cmd//main\u test.go
或go test-bench=./cmd/
),但我无法让它工作
我经常遇到的错误是:
无法在/home//Go/src/github.com///code>
这是真的,我的项目根目录中没有*.go
文件
我想到的只是先切换到目录中,然后用'go test-bench='运行基准测试
但是,由于我的程序依赖于当前的工作目录,并且结果很大程度上取决于是否能够在cmd/
目录之外的另一个目录中执行它。(如果这不是问题的一部分:))
第一条评论后更新:
我让它运行go test-bench=/cmd/
但是基准get的执行就像它将在/cmd/
目录中运行一样。
我注意到在“正常测试”中也有类似的行为——但这在任何时候对我来说都不是问题
因此,我的程序会根据当前工作目录扫描当前目录中的文件目录,这只会导致找到两个文件(main.go
和main\u test.go
),其中基准测试没有真正的帮助。因此要运行基准测试:
go test -bench=. ./cmd/<my-project>
注意:编译测试时,标记的前缀为test.
。它是可执行的,但它执行基准测试时就像我在该目录中一样。因此,我的程序扫描当前工作目录中的文件/目录,只在/cmd/
中找到两个文件(main.go
和main\u test.go
),而不是项目根目录中的所有文件。谢谢,它正在工作,但只运行了一次,而不是n
次。因此,这就像编译后运行二进制文件一样。对于n:=0,我的func如下所示:;n
(当然,实际代码中没有一行)您可以发布更多代码吗?听起来有点搞笑,我很困惑,我做错了什么。就像你说的那样。啊,很高兴听到。
go test -c ./cmd/my_proj
my_proj.test -test.bench=.