首页 > 解决方案 > 从测试启动一个弹簧启动应用程序

问题描述

我有两个弹簧启动应用程序。第一个管理 PostgreSQL 数据库中的数据。另一个通过 REST 公开这些数据。

在我的第一个 Spring Boot 应用程序中,我编写了一个使用测试数据库的测试。现在我想为另一个应用程序(REST)编写一个测试,该测试需要数据库中的数据。

如何在我的测试中将第一个 Spring Boot 应用程序用于第二个 Spring Boot 应用程序?

或者我可以设置只有在第一个 Spring Boot 应用程序的测试中才能运行测试?

标签: javaspringspring-bootjunitspring-test

解决方案


有不同类型的测试。第一个是单元测试——这可以确认您的业务逻辑有效。第二种形式是集成测试,它又被分成两部分——第一部分你单独测试组件以确认它以你期望的方式进行通信(有时称为组件测试),第二部分你测试组件与其他部分,真实的,组件。

您可以轻松地在 maven/spring-boot 中进行单元测试,并且进行组件测试也相当容易。然而,集成测试通常要复杂得多,并且通常需要涉及简单的 Maven 构建系统之外的机制。最常见的方法是使用 CI/CD 工具,例如 Jenkins 或 CircleCI。

通常的模式是首先运行单元测试,因为它们是最快的,然后是组件测试,然后是集成测试。后者通常需要创建一个“环境”,其中包含构成服务的所有协作组件(在您的情况下是两个 spring-boot 应用程序)。

对于集成测试,我们经常会发现最大的问题是“配置管理”,它基本上是描述哪些版本的哪些组件协同工作。对于您的问题,您需要一个数据库、数据和两个 spring-boot 应用程序,以及它们的配置和环境数据。


推荐阅读