Google app engine 在golang编写的Google应用程序引擎应用程序中使用和测试本地软件包的好方法?
我在测试我的GAE golang应用程序是否使用本地软件包时遇到问题。 这个问题看起来像这样Google app engine 在golang编写的Google应用程序引擎应用程序中使用和测试本地软件包的好方法?,google-app-engine,go,Google App Engine,Go,我在测试我的GAE golang应用程序是否使用本地软件包时遇到问题。 这个问题看起来像这样 . ├── app.yaml ├── main.go └── handler └── handler.go handler程序包在main.go中导入 package main import "handler" 在我开始编写测试之前,一切(例如,goapp-serve)都运行良好。 goapp测试投诉未找到处理程序包。似乎是GOPATH goapp发球和goapp测试是不同的。我找到的一个
.
├── app.yaml
├── main.go
└── handler
└── handler.go
handler
程序包在main.go
中导入
package main
import "handler"
在我开始编写测试之前,一切(例如,goapp-serve
)都运行良好。
goapp测试
投诉未找到处理程序
包。似乎是GOPATH
goapp发球
和goapp测试
是不同的。我找到的一个解决办法是
handler
在项目路径之外打包,并将其完全导入
限定名称(例如,github.com/../handler
),但对我来说没有意义
将项目分割到彼此紧密耦合的单独位置。是
有什么好方法可以使用和测试本地包吗
有关此主题,可以找到以下资源
/go
└── /myproject
├── app.yaml
├── main.go
└── /handler
└── handler.go
import "myproject/handler"
那么您的处理程序导入应该如下所示:
/go
└── /myproject
├── app.yaml
├── main.go
└── /handler
└── handler.go
import "myproject/handler"
这来得很晚,但如果有人遇到同样的问题,下面是如何处理的:
/whereever
└── /myproject
└──/src
├── app.yaml
├── main.go
└── /handler
└── handler.go
import handler
goapp-service
和goapp-deploy
。提供/部署与app.yaml相关的工作
cd /whereever/myproject/src
goapp serve
cd /whereever/myproject #GOPATH expects a subfolder called src
GOPATH=$GOPATH:`pwd` #add the current folder to the GOPATH
goapp test ./... #run all tests in any subfolders
source ~/.profile #this assumes ~/.profile is where you have permanently set your GOPATH
总而言之,“按预期工作”,但仍然很痛苦。尝试创建一个应用程序文件夹并移动app.yaml和main.go这是我使用app engine时遇到的问题。问题是,将项目放在GOPATH中,并使用完全限定的名称导入处理程序会导致导入冲突。错误消息是
go-app-builder:解析输入失败:app-file-handler.go与从GOPATH导入的同一个文件冲突。这不起作用,仍然会抱怨找不到包“myproject/x”在任何…
中,确保x.go
文件具有package x
而不是package main
。包的go doc将告诉您要使用的导入路径-请参阅