Как заставить сервер разработки Google App Engine на python (dev_server.py) работать для модульного тестирования в GWT? - PullRequest
0 голосов
/ 09 февраля 2010

Итак, у меня есть клиент GWT, который взаимодействует с сервером Python Google App Engine. Клиент делает запрос к ресурсам сервера, сервер отвечает в формате JSON. Это просто, без RPC или чего-то подобного. Я использую Eclipse для разработки своего кода GWT.

У меня есть тест GWTTestCase, который я хотел бы запустить. К сожалению, я не знаю, как на самом деле запустить сервер движка приложений Google для каждого теста. Приведенная ниже блестящая идея состояла в том, чтобы попытаться запустить сервер ядра приложений из командной строки, но, конечно, это не работает, поскольку Process и ProcessBuilder не являются классами, которые фактически содержит комплект разработчика GWT.

package com.google.gwt.sample.quizzer.client;

import java.io.IOException;
import java.lang.ProcessBuilder;
import java.lang.Process;

import com.google.gwt.junit.client.GWTTestCase;

public class QuizzerTest extends GWTTestCase {

  public String getModuleName() {
    return "com.google.gwt.sample.quizzer.Quizzer";
  }

  public void gwtSetUp(){
    ProcessBuilder pb = new ProcessBuilder("dev_appserver.py", 
                       "--clear_datastore",
                       "--port=9000",
                       "server_python");
    try {
      p = pb.start();
    } catch (IOException e) {
      System.out.println("Something happened when starting the app server!");
  }

  public void gwtTearDown(){ p.destroy(); }

  public void testSimple() {
    //NOTE: do some actual network testing from the GWT client to GAE here 
    assertTrue(true);}
}

Я получаю следующие ошибки при компиляции этого файла:

[ERROR] Line 21: No source code is available for type java.lang.Process; did you forget to inherit a required module?
[ERROR] Line 30: No source code is available for type java.lang.ProcessBuilder; did you forget to inherit a required module?

Как вы можете видеть ниже, я в основном хочу, чтобы это было так, как в тесте:

  1. Запускает пустой экземпляр хранилища данных моего сервера GAE
  2. запускает тест по сети для этого экземпляра сервера.
  3. Остановить сервер
  4. Конечно, сообщите мне результаты теста.

У кого-нибудь есть хороший способ сделать это? Частичные решения приветствуются! Хаки тоже хорошо. Может быть, некоторый прогресс в этой проблеме может быть достигнут путем редактирования файла конфигурации ".launch"? Единственный важный критерий - это то, что я хотел бы «протестировать» части моего кода GWT на моем реальном сервере Python GAE.

Спасибо.

1 Ответ

0 голосов
/ 13 февраля 2010

Я бы порекомендовал создать цель Ant для этого - взгляните на на этой странице для полного файла сборки Ant для GWT.

Затем в качестве первой строки цели тестирования добавьте задачу выполнения, чтобы запустить сервер. Смотрите здесь для exec docs.

Затем настройте задачу муравья в вашей IDE. Таким образом, вы запускаете сервер перед вашими тестами независимо от того, где вы запускаете тесты, и он может быть интегрирован в ваш процесс сборки, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...