Как получить код инициализации на стороне сервера при создании тестовых примеров GWT? - PullRequest
3 голосов
/ 01 февраля 2012

Я использую GWT 2.4. У меня есть несколько тестовых файлов, которые расширяют GwtTestCase. У меня вопрос: как и где разместить код, чтобы серверная часть инициализировала некоторые данные перед выполнением моих тестов?

Я пытался создать простой сервлет ...

public class PopulateCacheServlet extends HttpServlet  {

public void init(ServletConfig config) throws ServletException {
    try { 
        PopulateCache.addTestEntriesToCache();
        System.out.println("Dummy entries written to cache.");
    } catch (Exception e) { 
        e.printStackTrace();
    }
}   // init

}

и добавление его определения в файл моего модуля .gwt.xml ...

<servlet path="/populatecache" class="com.myco.clearing.web.PopulateCacheServlet" />

но я замечаю, что этот метод init никогда не вызывается.

1 Ответ

0 голосов
/ 07 февраля 2012

Вы можете просто добавить статический блок кода в ваш класс PopulateCacheServlet или инициализировать класс в конструкторе.Статический кодовый блок, если вы хотите запустить метод только один раз и только один раз (для JVM).Инициализация в конструкторе, если вы хотите настроить каждый сервлет отдельно.Хорошо, это не самое красивое решение, но так как это тестовый класс ...

Другой вариант - вы вызываете метод initialize из GwtTestCase.Вы можете использовать метод, помеченный @BeforeClass, чтобы вызвать метод init сервлета перед выполнением теста.Конечно, вы должны сделать свой сервлет GWT RemoteServlet, чтобы это работало.В противном случае сервлет не будет легко доступен из кода GWT.

...