【问题标题】:Is it possible to start up an external spring-boot application programmatically是否可以以编程方式启动外部 spring-boot 应用程序
【发布时间】:2018-11-26 12:14:27
【问题描述】:

我使用 spring-boot 2.0.3 创建了一个 rest 应用程序。从另一个 maven 模块(在不同的多模块 pom 中),我有一个集成测试,用于测试发送到正在运行的 rest 应用程序的数据是否得到处理。

是否可以以编程方式运行这个 spring-boot 应用程序?我不能使用简单的@SpringBootTest-annotation,因为 spring-boot 应用程序不在同一个 maven 多模块中。

【问题讨论】:

    标签: java spring-boot


    【解决方案1】:

    事情是“松散耦合”。技术上可行,但不推荐。构建本身有许多测试,使用 Mockito 进行模拟是必不可少的。

    应创建一个集成测试模块 ala cucumber.io,它将涵盖正在运行的模块的功能。

    这是接受答案的要点。

    【讨论】:

      【解决方案2】:

      我建议使用 mockito 来模拟对您的 rest 端点的一些数据的请求,并测试您的其他应用程序是否尝试将正确的数据发送到端点。

      这样,两个应用程序都是独立测试的,彼此之间没有依赖关系。这提供了能够在必要时将这些应用程序中的一个替换为另一个的好处。它还提供了良好的分离。这很重要,因为当您(或其他人)想要使用您的 REST 应用程序时,他们不会使用您的其他应用程序,因此使用您的测试中编写的静态数据测试 REST 应用程序并且不依赖于另一个应用程序。因为 REST 应用程序是独立的。

      但是,当您确实想以这种方式对其进行测试时,您可以尝试将您的其他应用程序包含在类路径中。

      【讨论】:

      • 我有许多独立测试应用程序的测试。但是我想提供一个单一的集成测试来简单地测试我是否可以按预期使用其余应用程序,以便我可以找到配置问题。我不能直接依赖于测试范围内的应用程序(我已经尝试过),但这对于自包含的 spring-boot 应用程序是不可行的
      • 按照我解释的方式,您不需要大量额外的测试,只需对其余 api 本身进行集成测试,而无需在您的应用程序中进行测试。因为一个休息应用程序需要根据定义是独立的。还是你也不想这样?
      • 我需要测试主应用程序的功能,当它与其余应用程序交互时,它被模拟出来......
      • 在这种情况下,按照我上面的回答,模拟其余的 api 绝对是最好的用例。但我知道你不想要那个?为什么?因为它不应该产生对许多其他测试的需求
      • 你误解了......我有单元测试来测试应用程序并模拟其余应用程序。但我也想进行一次集成测试以查找任何配置问题...
      猜你喜欢
      • 1970-01-01
      • 2019-04-19
      • 2020-12-06
      • 1970-01-01
      • 2017-01-16
      • 2017-02-24
      • 2014-05-21
      • 2010-11-12
      • 1970-01-01
      相关资源
      最近更新 更多