Проблемы с получением юнит-тестирования RPC на GWT - PullRequest
0 голосов
/ 09 июня 2009

Я пытаюсь пройти тестирование RPC с использованием GWT. Я использую проект StockWatcher по умолчанию, который упоминается здесь , я загружаю проект, импортирую его, все работает нормально.

Затем я запускаю junitcreator в проекте StockWatcher:

/Users/stephen/Work/gwt/gwt-mac-1.6.4/junitCreator -junit   /Users/stephen/Applications/eclipse/plugins/org.junit_3.8.2.v20080602-1318/junit.jar -module stockwatcher -eclipse StockWatcher com.google.gwt.sample.stockwatcher.StockWatcherTest

это создает StockWatcherTest.java в соответствующей тестовой директории и дает мне несколько файлов запуска в размещенном и веб-режиме.

Затем я также добавил junit.jar в classpath для этого проекта.

Затем я изменяю StockWatcherTest.java, чтобы проверить, могу ли я сделать асинхронный запрос к серверу. Все выглядит хорошо, но когда я пытаюсь запустить StockWatcherTest.java в режиме хостинга, я получаю следующую ошибку:

Запуск HTTP на порту 0 HTTP

прослушивание через порт 49569

Сервлет оболочки разработки получил запрос для приветствия в модуле 'Com.google.gwt.sample.stockwatcher.StockWatcher.JUnit.gwt.xml' [WARN] Ресурс не найден: greet; (может быть файл отсутствует в публичный путь или тег неправильно настроен в модуле com.google.gwt.sample.stockwatcher.StockWatcher.JUnit.gwt.xml ?) com.google.gwt.user.client.rpc.StatusCodeException: Не удается найти ресурс "приветствовать" в открытый путь модуля 'Com.google.gwt.sample.stockwatcher.StockWatcher.JUnit'

Вот мой класс StockWatcherTest.java

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

import com.google.gwt.core.client.GWT;
import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.user.client.rpc.AsyncCallback;

/**
 * GWT JUnit tests must extend GWTTestCase.
 */
public class StockWatcherTest extends GWTTestCase {

  /**
   * Must refer to a valid module that sources this class.
   */
  public String getModuleName() {
    return "com.google.gwt.sample.stockwatcher.StockWatcher";
  }

  /**
   * Add as many tests as you like.
   */
  public void testSimple() {
      GreetingServiceAsync greetingService = GWT.create(GreetingService.class);
      greetingService.greetServer("Bob",
                new AsyncCallback<String>() {
                    public void onFailure(Throwable caught) {
                        // Show the RPC error message to the user
                        System.out.println(caught);
                        fail("big time failure");
                        finishTest();
                    }

                    public void onSuccess(String result) {
                        System.out.println("success, biatch");
                        assertTrue(true);
                    }
                });
      delayTestFinish(1000);
  }

}

Вот ком / google / gwt / sample / stockwatcher / StockWatcher.gwt.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.6.2//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.6.2/distro-source/core/src/gwt-module.dtd">
<module rename-to='stockwatcher'>
  <!-- Inherit the core Web Toolkit stuff.                        -->
  <inherits name='com.google.gwt.user.User'/>

  <!-- Inherit the default GWT style sheet.  You can change       -->
  <!-- the theme of your GWT application by uncommenting          -->
  <!-- any one of the following lines.                            -->
  <inherits name='com.google.gwt.user.theme.standard.Standard'/>
  <!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
  <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/>     -->

  <!-- Other module inherits                                      -->

  <!-- Specify the app entry point class.                         -->
  <entry-point class='com.google.gwt.sample.stockwatcher.client.StockWatcher'/>
</module>

а вот web.xml в моей сгенерированной войне

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

  <!-- Default page to serve -->
  <welcome-file-list>
    <welcome-file>StockWatcher.html</welcome-file>
  </welcome-file-list>

  <!-- Servlets -->
  <servlet>
    <servlet-name>greetServlet</servlet-name>
    <servlet-class>com.google.gwt.sample.stockwatcher.server.GreetingServiceImpl</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>greetServlet</servlet-name>
    <url-pattern>/stockwatcher/greet</url-pattern>
  </servlet-mapping>

</web-app>

Так что я делаю не так? Любая помощь приветствуется. Спасибо.

Ответы [ 3 ]

3 голосов
/ 10 июня 2009

1 - вам нужно добавить "finishTest ();" в конце метода "onSuccess".

2-И чтобы разрешить полученное исключение: добавьте в свой StockWatcher.gwt.xml путь к вашему приветствию сервлета.

путь сервлета = '/ greet' class = 'com.google.gwt.sample.stockwatcher.server.GreetingServiceImpl' /

1 голос
/ 12 января 2010

Другое решение - использование GWT SyncProxy (поддержка синхронизации и асинхронности) для тестирования служб GWT RPC в JRE

Подробнее см. В сообщении http://www.gdevelop.com/w/blog/2010/01/10/testing-gwt-rpc-services/

0 голосов
/ 12 октября 2010

Я сделал несколько простых тестов для фондового наблюдателя. Вы можете увидеть их по адресу: http://tayek.com/StockWatcher.zip

...