多个 Spring 应用程序的单一集成测试
Single integration test for several Spring apps
我有两个 Spring
应用程序,它们通过数据库和一些 AMQP
:
相互交互
- 基于
Spring MVC
构建的网络应用程序
Spring-Boot
申请
每个应用程序都有其独立的上下文和属性文件。
为这两个应用程序编写单个集成测试的正确方法是什么?
更具体地说:我可以将这两个应用程序合并到一个 maven
项目中,以便访问它们。
是否可以为两个应用程序配置测试上下文
一个 Spring 测试?目前我不知道如何告诉 spring 在一次测试中对不同的应用程序使用不同的上下文。
此测试的另一个目的也是获得这两个应用程序的代码覆盖率。这就是为什么我不能将 Spring-boot
应用程序作为单独的进程启动。有可能吗?
Spring 的测试模块为每个测试带来一个应用程序上下文(看看 key abstractions section of the official documentation),所以不,每个测试不能有多个应用程序上下文。
您可以拥有一个 merged 应用程序上下文,它导入了 Spring Boot
和 Spring MVC
应用程序的上下文;这样,您就可以从两个应用程序测试 bean。但是,这可能不是您想要做的,而且我建议您不要这样做——您的测试将变得几乎毫无价值,因为使这种方法起作用可能需要一些技巧,并且您将不会实际测试您的应用程序,因为它们将被部署分开。
您应该编写每个应用程序的集成测试并测量每个应用程序的覆盖率。如果您的应用程序相对较小,您可以拥有一个端到端测试模块,该模块将 leverage Docker containers 创建一个类似于您的生产环境并验证您的应用程序是否正确协同工作。
我有两个 Spring
应用程序,它们通过数据库和一些 AMQP
:
- 基于
Spring MVC
构建的网络应用程序
Spring-Boot
申请
每个应用程序都有其独立的上下文和属性文件。
为这两个应用程序编写单个集成测试的正确方法是什么?
更具体地说:我可以将这两个应用程序合并到一个 maven
项目中,以便访问它们。
是否可以为两个应用程序配置测试上下文 一个 Spring 测试?目前我不知道如何告诉 spring 在一次测试中对不同的应用程序使用不同的上下文。
此测试的另一个目的也是获得这两个应用程序的代码覆盖率。这就是为什么我不能将
Spring-boot
应用程序作为单独的进程启动。有可能吗?
Spring 的测试模块为每个测试带来一个应用程序上下文(看看 key abstractions section of the official documentation),所以不,每个测试不能有多个应用程序上下文。
您可以拥有一个 merged 应用程序上下文,它导入了 Spring Boot
和 Spring MVC
应用程序的上下文;这样,您就可以从两个应用程序测试 bean。但是,这可能不是您想要做的,而且我建议您不要这样做——您的测试将变得几乎毫无价值,因为使这种方法起作用可能需要一些技巧,并且您将不会实际测试您的应用程序,因为它们将被部署分开。
您应该编写每个应用程序的集成测试并测量每个应用程序的覆盖率。如果您的应用程序相对较小,您可以拥有一个端到端测试模块,该模块将 leverage Docker containers 创建一个类似于您的生产环境并验证您的应用程序是否正确协同工作。