我已经分叉了hyperledger / fabric项目,在我的repo中,我尝试使用以下命令运行ECA的单元测试: 但是我收到以下错误:
流浪@ hyperledger-devenv的:v0.0.10-37b6688:/opt/gopath/src/github.com/hyperledger/fabric/membersrvc/ca$ 去测试eca_test.go
命令行论点
eca_test.go:30:2: 找不到包“command- / vendor /github.com/golang/protobuf/proto” 在任何一个:
/opt/go/src/command-/vendor/github.com/golang/protobuf/proto(来自$ GOROOT)
/opt/gopath/src/command-/vendor/github.com/golang/protobuf/proto(来自 $ GOPATH)
FAIL命令行参数[setup failed]
类似地,当我尝试运行CA单元测试时,我收到以下错误:
几天前,vagrant @ hyperledger-devenv:v0.0.10-37b6688:/opt/gopath/src/github.com/hyperledger/fabric/membersrvc/ca$ go test ca_test.go
命令行论点
ca_test.go:28:2:找不到 包“command- / vendor / github.com / spf13 / viper”中的任何一个: /opt/go/src/command-/vendor/github.com/spf13/viper(来自$ GOROOT)
/opt/gopath/src/command-/vendor/github.com/spf13/viper(来自> $ GOPATH)
FAIL命令行参数[setup failed]
这些使用对我来说,但是在我使用来自hyperledger / project的最新更改更新我的fork后,我无法运行测试
这是我的GOPATH的价值:
vagrant @ hyperledger-devenv:v0.0.10-37b6688:/opt/gopath/src/github.com/hyperledger/fabric$ echo $ GOPATH / opt / gopath
我不确定为什么golang构建系统在查找导入的包时会将“command- / vendor”附加到路径中。有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
根据文档go test
期望包名称作为参数。
如果您运行go test .
并执行此程序包的所有测试,那么测试应该没有问题。
可以运行go test eca_test.go
,但在这种情况下,您必须指定构建'eca_test'所需的所有其他文件。有关详细信息,请参阅“Please see this discussion on why not to cast the return value of malloc()
and family in C
.”。
如果你想从这个包中运行一个测试,最好使用go test . -run TestNewECA
“TestNewECA”是eca_test.go中测试函数的名称,而不是文件名。