Testing DropWizard测试

Testing DropWizard测试,testing,yaml,dropwizard,Testing,Yaml,Dropwizard,因为我正在使用eclipse并刚刚设置了dropwizard服务器。在命令提示符下,我输入了java-jar-target/hello-world-0.0.1-SNAPSHOT.jar服务器hello-world.yml并正在运行。然而,每当我更改eclipse文件时,比如更改yml文件,它都不会更新。我必须crtl+c并重新运行上面输入的内容。我的问题是,是否有一种更快的测试方法,以便在每次我更改某些内容时更新,或者我只需要处理测试。谢谢。从IDE内部运行 不同的JavaIDE允许更高效的工作

因为我正在使用eclipse并刚刚设置了dropwizard服务器。在命令提示符下,我输入了java-jar-target/hello-world-0.0.1-SNAPSHOT.jar服务器hello-world.yml并正在运行。然而,每当我更改eclipse文件时,比如更改yml文件,它都不会更新。我必须crtl+c并重新运行上面输入的内容。我的问题是,是否有一种更快的测试方法,以便在每次我更改某些内容时更新,或者我只需要处理测试。谢谢。

从IDE内部运行

不同的JavaIDE允许更高效的工作流。例如,在IDE中,您可以使用运行时配置运行应用程序,该配置使用
服务器hello world.yml
的参数执行
服务.main()
方法。这将为您节省无休止的Maven构建

不幸的是,在Eclipse中,代码更改的热交换通常很麻烦,因此我建议您在热交换代码时使用更可靠的方法。即使这样,热交换也可能有风险

有时重启是不可避免的

也就是说,在你的情况下,热交换是没有帮助的。您正在更改仅在启动时读取的启动配置文件。除非创建自己的动态刷新文件哈希更改机制(不建议),否则必须重新启动以查看更改

一种替代方法是将大部分配置测试放在单元测试中,并验证代码是否按预期响应

静态资源提供最佳工作流(无需重新启动)

您可能会遇到这样一种情况,即您只想更改静态资产(如JavaScript文件),在这种情况下,Intellij将允许您快速重新编译,并将更改的资产复制到
/target
目录中,并让Dropwizard在不重新启动的情况下立即拾取它们

如果您想更进一步,您可以注册Grunt.js的服务,这样它就可以持续监控
src/main/resources/assets
(或类似)的更改,然后自动为您更新
/target
。同样,Intellij将在焦点更改时自动保存,这样将产生一个最佳工作流,您可以在其中更改资源,等待一秒钟,刷新浏览器并查看即时结果


我不久前写了一篇长篇的博客文章,内容涉及到如果您想了解有关这种方法(以及一般的单页web应用程序开发)的更多细节。

从IDE内部运行

不同的JavaIDE允许更高效的工作流。例如,在IDE中,您可以使用运行时配置运行应用程序,该配置使用
服务器hello world.yml
的参数执行
服务.main()
方法。这将为您节省无休止的Maven构建

不幸的是,在Eclipse中,代码更改的热交换通常很麻烦,因此我建议您在热交换代码时使用更可靠的方法。即使这样,热交换也可能有风险

有时重启是不可避免的

也就是说,在你的情况下,热交换是没有帮助的。您正在更改仅在启动时读取的启动配置文件。除非创建自己的动态刷新文件哈希更改机制(不建议),否则必须重新启动以查看更改

一种替代方法是将大部分配置测试放在单元测试中,并验证代码是否按预期响应

静态资源提供最佳工作流(无需重新启动)

您可能会遇到这样一种情况,即您只想更改静态资产(如JavaScript文件),在这种情况下,Intellij将允许您快速重新编译,并将更改的资产复制到
/target
目录中,并让Dropwizard在不重新启动的情况下立即拾取它们

如果您想更进一步,您可以注册Grunt.js的服务,这样它就可以持续监控
src/main/resources/assets
(或类似)的更改,然后自动为您更新
/target
。同样,Intellij将在焦点更改时自动保存,这样将产生一个最佳工作流,您可以在其中更改资源,等待一秒钟,刷新浏览器并查看即时结果


我不久前写了一篇很长的博客文章,内容涉及这种方法(以及一般的单页web应用程序开发)的更多细节。

这是正确的。我唯一要补充的是,您应该为您的开发环境设置
http.shutdownggraceperiod
0s
,这将允许Jetty立即关闭。这是正确的。我唯一要补充的是,您应该为您的开发环境设置
http.shutdownggraceperiod
0s
,这将允许Jetty立即关闭。