【发布时间】:2022-01-23 09:19:07
【问题描述】:
我正在尝试使用闪电网络。我已经克隆了repo,并将其放在磁盘上(我使用的是 windows):
C:\Users\hallibut\Documents\GitHub\lnd
我想运行 itest 中的任何测试,比如说 testMultiHopPayments。我 cd 进入上述位置后使用的 cli 命令是:
go test itest -run testMultiHopPayments
但是,我不断收到错误消息:
package itest is not in GOROOT (C:\Program Files\Go\src\itest)
我已经阅读了有关此错误的各种帖子,但我仍然不太确定它为什么会发生,这可能是因为我不完全了解 go 模块(我是新手)。这篇文章可能是帮助我理解结构和环境变量的最佳选择:
https://golangbyexample.com/workspace-hello-world-golang/
从各种阅读中我的理解是,无论 go.mod 文件所在的目录是什么目录,都表示模块级目录。在 1.13 版之前,有一个必需的目录和结构,但现在如果您至少使用 1.13 版和模块,这应该不是问题。我正在使用 1.17.1。这在某种程度上是一种假设或推论,但我相信目录结构中较低的所有内容都是作为模块的一部分安装的包的一部分(并且由 package 关键字定义)。但是,我不明白为什么在子目录中包含源代码的包会丢失/抛出上述错误。我也试过跑步:
go mod install github.com/lightningnetwork/lnd/lntest/itest
这似乎没有做任何事情/对错误没有影响。我对包裹有什么不了解的地方?查看 go.mod 文件,我发现 itest 没有在任何地方专门定义……不确定是否需要。另外,我假设我必须事先运行一些构建过程?我尝试过:
go install -v ./...
【问题讨论】:
-
cd 进入文件夹并执行
go test。如果你正确使用模块,就这么简单。 -
go test -run /^testMultiHopPayments$/不需要模块名,可以用正则表达式过滤掉测试方法运行 -
所以我相信这有效 - 但我仍然不确定为什么上述方法会引发错误。
标签: go