我在测试我的GAE golang应用程序是否使用本地程序包时遇到问题。
probject看起来像这样。

.
├── app.yaml
├── main.go
└── handler
    └── handler.go
handler包以main.go导入。
package main

import "handler"

在开始编写测试之前,一切(例如goapp serve)都可以正常工作。goapp test抱怨找不到handler包。好像GOPATHgoapp servegoapp test的不同。我发现的一种解决方案是handler包位于项目路径之外,并完全导入
限定名称(例如github.com/.../handler),但对我来说没有意义
将项目拆分到彼此紧密耦合的单独位置。是
有没有使用和测试本地软件包的好方法?

在此主题上找到以下资源。
  • https://groups.google.com/forum/#!topic/google-appengine-go/C_i5kQEi7-A
  • https://github.com/matthewbelisle-wf/gopath-problem
  • 最佳答案

    这来晚了,但是如果有人遇到相同的问题,请按以下步骤处理:

  • 这样组织代码
    /whereever
    └── /myproject
        └──/src
           ├── app.yaml
           ├── main.go
           └── /handler
               └── handler.go
    
  • 为项目代码使用不合格的导入,例如
    import handler
    
  • 从src文件夹中运行goapp servegoapp deploy。相对于app.yaml的服务/部署工作
    cd /whereever/myproject/src
    goapp serve
    
  • goapp test设置GOPATH,它基于GOPATH进行工作
    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
    
  • 如有必要,请重置您的GOPATH
    source ~/.profile #this assumes ~/.profile is where you have permanently set your GOPATH
    

  • 总而言之,“按预期工作”,但仍然很痛苦。

    07-24 09:18