gwt开发模式运行时的java服务器端测试用例
所以我有一个(有点)奇怪的想法——有一个正在开发的系统,它通过各种服务与外部世界通信,但它完全是服务器端的,并且作为一场战争部署。我想为它编写一个基本的UI(开发/调试级别,不用于生产)。主要目标:
- 避免调用系统服务,而是直接在java对象上调用方法
- 使用GWT
- 必须从测试用例(testng)和部署在tomcat上的war(最好是在开发和生产gwt模式下)工作
- 将其分开,限制对系统的更改
所以。。。如何使用gwt实现这一点? 在部署到tomcat时,我将两者投入同一场战争。(因为不同的战争有不同的类装入器)。 在运行测试用例(集成,它们使用db和所有东西)时,我会在初始化期间启动embedded jetty并注册新的gwt servlet
好的,这听起来是可行的。但是开发模式呢?我希望能够启动常规开发模式,这将允许
- 修改UI代码(显然可以),然后
- 修改服务器端代码(我通常用jrebel实现)——但是在这种情况下如何运行测试用例呢?我肯定不会重写它们李>
放弃在同一jvm中运行UI和系统的想法会有所帮助,并允许很好的分离,但也会迫使我编写一些毫无意义的RPC/RMI/东西
关于如何实现这一点有什么见解吗
顺便说一句,这只是一个下班后的项目,所以我绝对不会在现实系统中做那些疯狂的想法
# 1 楼答案
在单独的JVM中运行后端(Tomcat、Jetty等)和前端(GWT-dev模式)就可以了。这实际上或多或少就是推荐的方法(特别是如果您希望在某个时候使用SuperDevMode)
以下是我使用eclipse的开发策略:
这样,当我在GWT部分中更改某些内容时,我只需刷新浏览器,就可以在UI中看到更改
JRebel负责后端部分的所有更改
前端和后端之间的通信方式与在生产模式下的通信方式相同(
RequestFactory
、RPC
或RequestBuilder
)