有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

gwt开发模式运行时的java服务器端测试用例

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

  • 避免调用系统服务,而是直接在java对象上调用方法
  • 使用GWT
  • 必须从测试用例(testng)和部署在tomcat上的war(最好是在开发和生产gwt模式下)工作
  • 将其分开,限制对系统的更改

所以。。。如何使用gwt实现这一点? 在部署到tomcat时,我将两者投入同一场战争。(因为不同的战争有不同的类装入器)。 在运行测试用例(集成,它们使用db和所有东西)时,我会在初始化期间启动embedded jetty并注册新的gwt servlet

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

  • 修改UI代码(显然可以),然后
  • 修改服务器端代码(我通常用jrebel实现)——但是在这种情况下如何运行测试用例呢?我肯定不会重写它们

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

关于如何实现这一点有什么见解吗

顺便说一句,这只是一个下班后的项目,所以我绝对不会在现实系统中做那些疯狂的想法


共 (1) 个答案

  1. # 1 楼答案

    在单独的JVM中运行后端(Tomcat、Jetty等)和前端(GWT-dev模式)就可以了。这实际上或多或少就是推荐的方法(特别是如果您希望在某个时候使用SuperDevMode)

    以下是我使用eclipse的开发策略:

    1. 在调试模式下使用WTP和Jetty启动后端服务器(当我在后端更改某些内容时,JRebel用于热交换类)
    2. 启动GWT开发模式
    3. 在浏览器中打开GWT应用程序

    这样,当我在GWT部分中更改某些内容时,我只需刷新浏览器,就可以在UI中看到更改
    JRebel负责后端部分的所有更改

    前端和后端之间的通信方式与在生产模式下的通信方式相同(RequestFactoryRPCRequestBuilder