【问题标题】:How do you get the python Google App Engine development server (dev_server.py) running for unit test in GWT?如何让 Python Google App Engine 开发服务器 (dev_server.py) 在 GWT 中运行以进行单元测试?
【发布时间】:2011-01-14 15:20:10
【问题描述】:

所以,我有一个 GWT 客户端,它与 Python Google App Engine 服务器交互。客户端向服务器资源发出请求,服务器以 JSON 格式响应。这很简单,没有 RPC 或类似的东西。我正在使用 Eclipse 开发我的 GWT 代码。

我有想要运行的 GWTTestCase 测试。不幸的是,我不知道如何真正让谷歌应用引擎服务器在每个测试中运行。我有一个好主意,尝试从命令行启动应用程序引擎服务器,但这当然行不通,因为 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”配置文件可以在这个问题上取得一些进展?唯一重要的标准是我想针对我的实际 GAE Python 服务器对我的 GWT 代码部分进行“单元测试”。

谢谢。

【问题讨论】:

  • 我很困惑。您是否使用 GWT 用 Ja​​va 编写前端,而使用 Python 编写后端?
  • 是的,就是这样。
  • 我应该是明确的。是的,情况正是如此。前端(客户端)用 GWT 编写,后端(服务器)用 Python GAE 编写。

标签: unit-testing google-app-engine gwt junit


【解决方案1】:

我建议为此创建一个 Ant 目标 - 查看 this page 以获取 GWT 的完整 ant 构建文件。

然后,作为测试目标的第一行,添加一个执行任务来启动服务器。查看 here 获取 exec 文档。

然后在您的 IDE 中设置该 ant 任务。这样,无论您从哪里运行测试,您都可以在测试之前运行服务器,并且如果您愿意,它可以集成到您的构建过程中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    相关资源
    最近更新 更多