Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在构建GWT测试用例时,如何让服务器端初始化代码运行?_Gwt_Gwttestcase - Fatal编程技术网

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

在构建GWT测试用例时,如何让服务器端初始化代码运行?,gwt,gwttestcase,Gwt,Gwttestcase,我正在使用GWT2.4。我有许多扩展GwtTestCase的测试文件。我的问题是,如何以及在何处放置代码,以便服务器端在测试运行之前初始化一些数据 我试着创建一个简单的servlet public class PopulateCacheServlet extends HttpServlet { public void init(ServletConfig config) throws ServletException { try { PopulateCache.ad

我正在使用GWT2.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方法从未被调用。

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

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