В моем приложении у меня есть набор DAO, которые я вставляю в свой прикладной уровень. Для приемочного теста, который я пишу, я хочу предварительно загрузить данные хранилища dev_server с данными, поэтому я использую ту же конфигурацию Spring в своем тесте JUnit (используя аннотацию @ContextConfiguration), чтобы вставить экземпляр соответствующего DAO в мой тест. Когда я действительно собираюсь хранить некоторые данные, например:Приемочные испытания предварительной загрузки данных в хранилище данных сервера GAE dev
dao.add(entity)
Я получаю страшную «Никакая среда API для этой темы не зарегистрирована».
Caused by: java.lang.NullPointerException: No API environment is registered for this thread.
at com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppId(DatastoreApiHelper.java:108)
at com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppIdNamespace(DatastoreApiHelper.java:118)
....
Это, вероятно, потому, что мой тест не читал в GAE приложения-web.xml с деталями приложения (хотя я предполагаю, что здесь я мог действительно быть неправильно); поэтому он не знает, чтобы писать в тот же файл данных, что приложение, работающее на dev_server, читает/записывает.
Как я могу заставить свой тест «указывать» на то же хранилище данных, что и приложение? Есть ли какой-то механизм «источника данных», который я могу ввести как в приложение, так и в тест? Есть ли способ получить мой тест, чтобы заставить datastore api прочитать необходимую конфигурацию?
К сожалению, этот подход работает только с GAE <1.4.2 (я использовал 1.4.0). Что-то в API должно было измениться между версиями, которые недействительны для этого решения. – kierans