gwt dev模式运行时的服务器端测试用例

时间:2012-09-08 05:00:36

标签: java unit-testing gwt tomcat war

所以我有这个(有点)奇怪的想法 - 正在开发的系统通过各种服务与外界进行通信,但它完全是服务器端,并且作为单一战争部署。我想为它编写一个基本的UI(开发/调试级,不适合生产)。主要目标:

  • 避免调用System服务,而是直接在java对象上调用方法
  • 使用GWT
  • 必须同时使用测试用例(testng)和tomcat上的部署战争(最好是在开发和生产gwt模式下)
  • 保持独立,限制对系统的更改

那么......如何用gwt做到这一点? 当部署到tomcat时,我会把两者都放在同一个战争中。 (因为不同的战争有不同的类加载器)。 当运行测试用例(集成,他们使用db和所有东西)时,我会在初始化期间启动嵌入式jetty并注册新的gwt servlet。

好的,这听起来可行。但是开发模式怎么样?我希望能够启动常规开发模式,这将允许

  • 修改UI代码(很明显会这样做)和
  • 修改服务器端代码(我通常用jrebel实现) - 但是在这种情况下如何运行测试用例?我肯定不会重写它们。

放弃在同一个jvm中运行UI和系统的想法会有所帮助,并允许很好的分离,但也会迫使我写一些毫无意义的RPC / RMI /东西。

有关如何处理此事的任何见解?

顺便说一下 - 这只是一个非工作时间的项目,非常疯狂 - 我永远都不会这样做,真实系统的想法是受欢迎的。

1 个答案:

答案 0 :(得分:0)

在单独的JVM中运行后端(Tomcat,Jetty等)和前端(GWT开发模式)工作正常。实际上现在或多或少是推荐的方法(特别是如果你想在某些时候使用SuperDevMode)。

这是我使用eclipse的开发策略:

  1. 在调试模式下使用WTP和Jetty启动后端服务器(当我在后端更改某些内容时,JRebel用于热交换类)。
  2. 启动GWT开发模式
  3. 在浏览器中打开GWT应用
  4. 这样当我在GWT部分中更改某些内容时,我只需刷新浏览器即可看到UI中的更改。
    JRebel负责后端部分的所有更改。

    前端和后端之间的通信与在生产模式(RequestFactoryRPCRequestBuilder)中完成的方式相同。