运行junit作为服务器并注入更改?

时间:2011-04-28 14:37:55

标签: java scala junit jrebel

出于某些测试目的,不必为每次测试运行重启我的jetty服务器。

使用jrebel,我可以直接应用源更改。

是否可以以可以动态注入更改的方式运行我的jetty服务器,然后重新运行测试而无需重新启动服务器?

1 个答案:

答案 0 :(得分:1)

这取决于您要注入的更改类型。

那就是说,我相信这里存在更深层次的问题。从测试质量的角度来看,重启Jetty是正确的做法。它确保每个测试从一个干净的页面开始,从而最大限度地降低测试间依赖性的风险。另一方面,这是昂贵的(时间上的)并且使您的套件运行得更慢。

如果我是你,我会按如下方式解决这个问题:我将重构我想要测试的代码(可能是:servlet),这样它们就不依赖于Jetty基础架构,而且可以独立运行。例如,如果我有一个带有SomeServlet方法的servlet类doGet(),我将重构它,以便它实现MyServelt goGet()MyRequest的{​​{1}}, MyResponse参数。

一旦这样做,您可以在没有Jetty服务器的情况下对MyServlet进行单元测试。这样您不仅可以更快地进行测试,还可以简化调试会话并使组件更加分离。当然,您需要添加一些管道代码:一个使servelt接口适应MyServelt对象的类(通过委托)。