【问题标题】:DropWizard testingDropWizard 测试
【发布时间】:2013-07-07 09:08:30
【问题描述】:

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

【问题讨论】:

    标签: testing yaml dropwizard


    【解决方案1】:

    在 IDE 中运行

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

    不幸的是,在 Eclipse 中,代码更改的热插拔通常很麻烦,所以我建议您使用consider Intellij,这在热插拔代码方面更可靠。即便如此,热插拔也可能存在风险。

    有时重启是不可避免的

    话虽如此,在您的情况下,热插拔将无济于事。您正在更改仅在启动时读取的启动配置文件。除非您创建自己的 dynamic-refresh-on-file-hash-change 机制(不建议),否则您必须重新启动才能看到更改。

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

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

    您可能会遇到只想更改静态资产(如 JavaScript 文件)的情况,在这种情况下,Intellij 将允许您简单地重新编译并将更改的资产复制到 /target 目录并立即拥有它们由 Dropwizard 拾取而无需重新启动。

    如果您想更进一步,您可以使用 Grunt.js 的服务,以便它持续监控 src/main/resources/assets(或类似的)的更改,然后自动为您更新您的 /target。同样,Intellij 将自动保存焦点更改,因此这将导致您更改资产、等待一秒钟、刷新浏览器并立即查看结果的最佳工作流程。

    如果您想了解有关此方法(以及一般单页 Web 应用程序开发)的更多详细信息,我不久前写了一篇涵盖 Dropwizard and Ember Data 的冗长博客文章。

    【讨论】:

    • 这是正确的。我唯一要补充的是,您应该为您的开发环境将http.shutdownGracePeriod 设置为0s,这将允许Jetty 立即关闭。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 2017-12-19
    • 2021-01-23
    • 2015-03-28
    • 1970-01-01
    相关资源
    最近更新 更多