Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将junit作为服务器运行并注入更改?_Java_Scala_Junit_Jrebel - Fatal编程技术网

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

Java 将junit作为服务器运行并注入更改?,java,scala,junit,jrebel,Java,Scala,Junit,Jrebel,出于某些测试目的,不必在每次测试运行时都重新启动jetty服务器就好了 使用jrebel,我可以直接应用源代码更改 运行jetty服务器时是否可以动态注入更改,然后重新运行测试,而无需重新启动服务器?这取决于要注入的更改类型 尽管如此,我相信这里还有一个更深层次的问题。从测试质量的角度来看,重启Jetty是正确的做法。它确保每个测试从一个干净的页面开始,从而最大限度地降低测试间依赖性的风险。另一方面,这是昂贵的(时间方面),并使您的套件运行较慢 如果我是你,我会这样说:我将重构我想要测试的代码(

出于某些测试目的,不必在每次测试运行时都重新启动jetty服务器就好了

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


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

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

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

如果我是你,我会这样说:我将重构我想要测试的代码(大概是:servlet),这样它们就不依赖于Jetty基础设施,并且可以独立运行。例如,如果我有一个servlet类
SomeServlet
及其
doGet()
方法,我将对其进行重构,使其实现
MyServelt
,其
goGet()
接受
MyRequest
MyResponse
参数


一旦这样做了,就可以在没有Jetty服务器的情况下对MyServlet进行单元测试。这不仅可以加快测试速度,还可以简化调试会话,使组件更加解耦。当然,您需要添加一些管道代码:一个将servelt接口调整为MyServelt对象的类(通过委派)。

因此,将junit与服务器和jrebel结合起来是个好主意;)在上述手册中,从测试质量的角度来看,重启Jetty是正确的做法。但是,如果您正常地进行测试,那么您将在项目的一小部分中重新运行测试,有时只是少量的测试。对于最终的测试问题,您将以质量安全的方式运行,但对于快速开发,注入就足够了。