2013-06-18 3 views
3

у меня Appengine SDK в ~/Applications/google_appengineКак запустить модульных тестов для Appengine го проекта

В Eclipse, у меня есть внешний инструмент настройки для запуска сервера Dev. Он указал на:

~/Application/google_appengine/dev_appserver.py

Также в Eclipse (Go Preferences), я задал GOROOT, чтобы указать на

~/Application/google_appengine/GOROOT

Теперь я пытаюсь запустить некоторые модульные тесты для своего проекта. Если я использую мои регулярные установки идут (не Appengine один), я получаю эту ошибку:

../../context/context.go:4:2: cannot find package "appengine" in any of: 
/usr/local/go/src/pkg/appengine (from $GOROOT) 
/Users/home/src/go/foodbox/src/appengine (from $GOPATH) 
../../context/data.go:4:2: cannot find package "appengine/datastore" in any of: 
/usr/local/go/src/pkg/appengine/datastore (from $GOROOT) 
/Users/home/src/go/foodbox/src/appengine/datastore (from $GOPATH) 
../../context/context.go:5:2: cannot find package "appengine/user" in any of: 
/usr/local/go/src/pkg/appengine/user (from $GOROOT) 
/Users/home/src/go/foodbox/src/appengine/user (from $GOPATH) 

Если я использую AppEngine идти, я получаю это:

load cmd/cgo: package cmd/cgo: no Go source files in /Users/home/Application/google_appengine/goroot/src/cmd/cgo 

Похоже, по умолчанию установка не может найти пакеты appengine (я думаю, это не удивительно). Я не уверен, в чем проблема, когда я использую инструменты appengine go. Может ли кто-нибудь сказать мне, как заставить это работать?

Спасибо!

+0

Посмотрите на http://stackoverflow.com/questions/7858711/how-to-run-unit-tests-for-code-that-uses-app-engine-services-in-go (особенно https: //github.com/icub3d/appenginetesting) – Intermernet

+0

Итак, нет способа использовать инструменты go из коробки для тестирования приложения appengine? Теоретически, я должен иметь возможность создавать обертки интерфейса вокруг специальных библиотек приложений. Могу ли я это сделать? – Jordan

+0

Если вы хотите написать интерфейсные обертки arounnd appengine конкретных библиотек, см. - https://github.com/crhym3/aegot Это не то, что я бы рекомендовал, так как вы будете пресекать LOT – mzimmerman

ответ

5

Возможно, стоит отметить, что пакет appengine/aetest теперь включен в SDK, since 1.8.6. См. documentation.

В основном вы получаете appengine.Context, который может быть использован в ваших тестах, аналогично icub3d/appenginetesting.

Цитируя пример из документации:

import (
     "testing" 

     "appengine/aetest" 
) 

func TestMyFunction(t *testing.T) { 
     c, err := aetest.NewContext(nil) 
     if err != nil { 
       t.Fatal(err) 
     } 
     defer c.Close() 

     // Run code and tests requiring the appengine.Context using c. 
} 
0

Смотрите документацию:

http://blog.golang.org/appengine-dec2013

ЗАКАНЧИВАТЬ раздел под названием "Тестирование Local Unit"

Я думаю, что вы ищет goapp test, который поставляется с sdk.

Смежные вопросы