1

我的应用程序是使用 Spring IoC 的独立 Java 应用程序。使用 ApplicationContext 加载引导应用程序可以说内存中有 35 个服务,然后在我的应用程序的 JVM 生命周期实例中使用这些服务。这种引导需要大约 6-7 分钟,这使得单元测试变得困难。

这是我必须做的一系列步骤,我试图避免并仍然使用 Spring:

  1. Bootstrap(Spring),然后是实际的业务逻辑代码。
  2. 测试代码。
  3. 测试后我发现我想改变一些东西,这意味着我必须停止 JVM,修改我的代码,重新启动它,此时 Spring 再次启动应用程序大约需要 6-7 分钟。

如何在不强制重启 JVM 的情况下在同一个 JVM 实例中测试我修改过的代码?

4

1 回答 1

4

没有简单的解决方案

我知道避免您的问题的三种可能方法:

  1. 尝试模拟部分服务。尤其是在 junit 测试中,这是推荐的实践。在 IOC 就绪架构中,这应该很容易。在手动测试中,您可以使用虚假服务。

  2. 切换到 OSgI 架构。这将允许您启动、停止和重新部署单个服务。但是您必须使用 OSgI 容器,并且切换需要 6-7 分钟的倍数。

  3. 尝试类似 JRebel 的东西,它承诺消除热部署的问题(经过 14 天的评估,您将不得不购买它)。但是很多时候扩展热部署不会有帮助,因为你必须清理你的应用程序上下文。

于 2013-09-08T18:51:04.123 回答