在构建GWT测试用例时如何让服务器端初始化代码运行?

时间:2012-01-31 20:44:12

标签: gwt gwttestcase

我正在使用GWT 2.4。我有许多扩展GwtTestCase的测试文件。我的问题是,我如何以及在何处放置代码,以便服务器端在我的测试运行之前初始化一些数据?

我尝试创建一个简单的servlet ......

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 :(得分:0)

您可以简单地向PopulateCacheServlet类添加静态代码块,或者在构造函数中初始化类。如果要仅运行一次且仅运行一次方法(每个JVM),则为静态代码块。如果要单独设置每个servlet,请在构造函数中初始化。好吧,这不是最美丽的解决方案,但因为它是一个测试类......

另一个选项是从GwtTestCase调用initialize方法。在测试运行之前,您可以使用带有@BeforeClass注释的方法调用servlet的init方法。当然,您必须使您的servlet成为GWT RemoteServlet才能使其正常工作。否则,无法从GWT代码轻松访问servlet。