Spring JMS 测试
1. 概述
在本教程中,我们将创建一个简单的 Spring 应用程序,该程序连接到 ActiveMQ 来发送和接收消息。我们将专注于测试这个应用程序以及测试 Spring JMS 的不同方法。
2. 应用程序设置
首先,让我们创建一个基本的应用程序,该程序可以用于测试。我们需要添加必要的依赖项并实现消息处理。
在本教程中,我们将创建一个简单的 Spring 应用程序,该程序连接到 ActiveMQ 来发送和接收消息。我们将专注于测试这个应用程序以及测试 Spring JMS 的不同方法。
首先,让我们创建一个基本的应用程序,该程序可以用于测试。我们需要添加必要的依赖项并实现消息处理。
在本教程中,我们将介绍一些不同的方法来断言在外部映射中存在一个嵌套映射。我们主要讨论JUnit Jupiter API和Hamcrest API。
本文使用Junit 5,让我们看看Maven依赖项:
``<dependency>``
``<groupId>``org.junit.jupiter``</groupId>``
``<artifactId>``junit-jupiter-engine``</artifactId>``
``<version>``5.10.2``</version>``
``<scope>``test``</scope>``
``</dependency>``
在本教程中,我们将探讨如何测试我们的代码是否调用了Lambda函数。实现此目标有两种方法。首先,我们将检查Lambda是否使用正确的参数被调用。然后,我们将关注测试行为,检查Lambda代码是否执行并产生了预期的结果。
首先,让我们创建一个名为_LambdaExample_的类,它包含一个我们将调用_bricksList_的_ArrayList_:
class LambdaExample {
ArrayList``<String>`` bricksList = new ArrayList<>();
}
Java提供了一种简单的与环境变量交互的方式。我们可以访问它们,但不容易改变它们。然而,在某些情况下,我们需要更多地控制环境变量,特别是在测试场景中。
在本教程中,我们将学习如何解决这个问题,并以编程方式设置或更改环境变量。我们只会讨论在测试上下文中使用它。 使用动态环境变量进行领域逻辑应该被劝阻,因为它容易出现问题。
访问环境变量的过程非常简单。_System_类为我们提供了这样的功能:
@Test
void givenOS_whenGetPath_thenVariableIsPresent() {
String classPath = System.getenv("PATH");
assertThat(classPath).isNotNull();
}
在本文中,我们将学习如何模拟Amazon S3(简单存储服务)以运行Java应用程序的集成测试。
为了演示它的工作原理,我们将创建一个使用AWS SDK与S3交互的CRUD(创建、读取、更新、删除)服务。然后,我们将使用模拟的S3服务为每个操作编写集成测试。
Amazon Simple Storage Service(S3)是由Amazon Web Services(AWS)提供的高可扩展性和安全的云存储服务。它使用对象存储模型,允许用户从网络上的任何地方存储和检索数据。
在本教程中,我们将讨论众所周知的Mockito注解_@InjectMocks_、@Mock_和@Spy_,并理解它们在多级注入场景中的协同工作方式。我们将讨论重要的测试概念,并学习如何进行适当的测试配置。
多级注入是一个强大的概念,但如果误用可能会很危险。让我们在继续实现之前回顾一下重要的理论概念。
根据定义,单元测试是覆盖源代码一个单元的测试。 在Java世界中,我们可以将单元测试视为覆盖某个特定类—服务、仓库、工具等的测试。
在本教程中,我们将讨论使用Spring应用程序事件的代码测试。我们将从手动创建测试工具开始,这些工具帮助我们在测试目的下发布和收集应用程序事件。
之后,我们将探索Spring Modulith的测试库,并使用其流畅的场景API来讨论常见的测试案例。使用这种声明性DSL,我们将编写富有表现力的测试,这些测试可以轻松地产生和消费应用程序事件。
Spring Framework提供应用程序事件,以允许组件在保持松散耦合的同时相互通信。 我们可以使用_ApplicationEventPublisher_ bean来发布内部事件,这些事件是普通的Java对象。因此,所有注册的监听器都会收到通知。
现在,新版的《REST With Spring - "REST With Spring Boot"》终于发布了,当前价格将在6月22日之前有效,之后将永久上涨50美元。
>获取访问权限
现在
面向切面编程(AOP)通过将跨领域关注点分离到一个基本单元,称为切面,从而改善程序设计,这个单元与主应用程序逻辑分开。Spring AOP是一个框架,它帮助我们轻松实现切面。
AOP切面与其他软件组件没有什么不同。它们需要不同的测试来验证它们的正确性。在本教程中,我们将学习如何对Spring AOP切面进行单元测试和集成测试。
在本教程中,我们将学习如何在本地开发和测试环境中设置环境时重用Testcontainers。
首先,我们必须确保在应用程序停止或测试套件完成时不关闭容器。之后,我们将讨论Testcontainer特定的配置,并讨论使用Testcontainers桌面应用程序的好处。最后,我们需要记住,重用Testcontainers是一个实验性功能,目前还不适合在CI流水线中使用。
通过@_Testcontainers和@_Container注解,我们可以简单地为我们的单元测试启用Testcontainers。
编程中最重要的主题之一是测试。Spring 框架和 Spring Boot 通过提供测试框架扩展以及引导我们编写具有大量后台自动化的最小、可测试代码,提供了非常好的支持。要运行 Spring Boot 集成测试,我们只需要在我们的测试类中添加 @SpringBootTest。我们可以在 Spring Boot 中的测试中找到简短的介绍。即使我们在没有 Spring Boot 的情况下使用 Spring 框架,我们也可以非常高效地进行集成测试。
但是开发测试越容易,我们就越有可能遇到陷阱。在本教程中,我们将探讨 Spring Boot 测试是如何执行的,以及在编写测试时需要考虑什么。