Java 将junit作为服务器运行并注入更改?
出于某些测试目的,不必在每次测试运行时都重新启动jetty服务器就好了 使用jrebel,我可以直接应用源代码更改Java 将junit作为服务器运行并注入更改?,java,scala,junit,jrebel,Java,Scala,Junit,Jrebel,出于某些测试目的,不必在每次测试运行时都重新启动jetty服务器就好了 使用jrebel,我可以直接应用源代码更改 运行jetty服务器时是否可以动态注入更改,然后重新运行测试,而无需重新启动服务器?这取决于要注入的更改类型 尽管如此,我相信这里还有一个更深层次的问题。从测试质量的角度来看,重启Jetty是正确的做法。它确保每个测试从一个干净的页面开始,从而最大限度地降低测试间依赖性的风险。另一方面,这是昂贵的(时间方面),并使您的套件运行较慢 如果我是你,我会这样说:我将重构我想要测试的代码(
运行jetty服务器时是否可以动态注入更改,然后重新运行测试,而无需重新启动服务器?这取决于要注入的更改类型 尽管如此,我相信这里还有一个更深层次的问题。从测试质量的角度来看,重启Jetty是正确的做法。它确保每个测试从一个干净的页面开始,从而最大限度地降低测试间依赖性的风险。另一方面,这是昂贵的(时间方面),并使您的套件运行较慢 如果我是你,我会这样说:我将重构我想要测试的代码(大概是:servlet),这样它们就不依赖于Jetty基础设施,并且可以独立运行。例如,如果我有一个servlet类
SomeServlet
及其doGet()
方法,我将对其进行重构,使其实现MyServelt
,其goGet()
接受MyRequest
,MyResponse
参数
一旦这样做了,就可以在没有Jetty服务器的情况下对MyServlet进行单元测试。这不仅可以加快测试速度,还可以简化调试会话,使组件更加解耦。当然,您需要添加一些管道代码:一个将servelt接口调整为MyServelt对象的类(通过委派)。因此,将junit与服务器和jrebel结合起来是个好主意;)在上述手册中,从测试质量的角度来看,重启Jetty是正确的做法。但是,如果您正常地进行测试,那么您将在项目的一小部分中重新运行测试,有时只是少量的测试。对于最终的测试问题,您将以质量安全的方式运行,但对于快速开发,注入就足够了。