当前位置: 首页 > 知识库问答 >
问题:

Spring Boot 2.0集成测试JmsTemboard

索瀚海
2023-03-14

我有一个非常简单的MessageHandler类,由于Spring Boot,它在运行时只需以下几行代码和配置即可工作:

msg处理程序

    @Component
    public class MessageHandler {

        @JmsListener(destination = "${solace.jms.queueName}")
        public void processMsg(Message msg) {
            MessageHeaders hdrs = msg.getHeaders();
            etc...

主类

    @SpringBootApplication
    public class Application implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

配置

    solace.jms.client-name=eeeee
    solace.jms.client-password=dddd
    solace.jms.client-username=ccccc
    solace.jms.msg-vpn=bbbb
    solace.jms.host=smf://aaaaa.xx.yy.com:8000
    solace.jms.queueName=ffffff

全聚甲醛

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>blah</groupId>
    <artifactId>blahblah</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <start-class>blah.Application</start-class>
        <java.version>1.8</java.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <cucumber.version>2.3.1</cucumber.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.solace.spring.boot</groupId>
            <artifactId>solace-jms-spring-boot-parent</artifactId>
            <version>2.0.0</version>
            <type>pom</type>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.0.5.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.solace.spring.boot</groupId>
            <artifactId>solace-jms-spring-boot-starter</artifactId>
            <version>2.0.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
            <version>2.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <version>2.0.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.197</version>
        </dependency>
        <dependency>
            <groupId>com.sybase</groupId>
            <artifactId>jconn4</artifactId>
            <version>16</version>
        </dependency>
        <dependency>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-core</artifactId>
            <version>3.5.3</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <version>2.0.5.RELEASE</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>2.0.5.RELEASE</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <artifactId>android-json</artifactId>
                    <groupId>com.vaadin.external.google</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>${cucumber.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>${cucumber.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-spring</artifactId>
            <version>${cucumber.version}</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.0.5.RELEASE</version>
                <configuration>
                    <fork>true</fork>
                    <skip>false</skip>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

我现在要寻找的是如何在编译时测试它。我的具体问题是如何将JmsTemplate自动连接为模拟实例,以及应该在测试应用程序属性中使用哪些配置值。

谢谢

共有2个答案

杜辉
2023-03-14

看看JMS模拟测试,它是Spring集成高级测试示例的一部分。请注意,这不同于集成测试(尽管名称不同),集成测试涉及到连接到实际的代理。模拟测试不涉及任何代理(外部或嵌入式),并且包括有效和无效的消息测试。

作为替代方案,您可以使用SpringCloudStream来处理消息。这是构建事件驱动的Spring Boot微服务的一种更简单/更新的方法,避免了在使用JmsTemplate时必须编写样板消息传递代码。有一个活页夹可供安慰经纪人使用。此外,您还可以模拟MessageHandler,并以类似于前面提到的Spring集成示例的方式进行测试。有关更多详细信息,请参阅本文。

赫连永怡
2023-03-14

您可以使用嵌入式ActiveMQ实例代理进行测试

来自Spring Boot文档:

当ActiveMQ在类路径上可用时,Spring Boot还可以配置ConnectionFactory。如果存在代理,则会自动启动和配置嵌入式代理(前提是没有通过配置指定代理URL)。

 类似资料:
  • 英文原文:http://emberjs.com/guides/testing/integration/ 集成测试通常用来测试应用中得重要工作流。集成测试用来模拟用户交互和确认交互结果。 设置 为了对Ember应用进行集成测试,需要在测试框架中运行应用。首先需要将根元素(root element)设置为任意一个已知将存在的元素。如果根元素在测试运行时可见的话,这对测试驱动开发非常有用,带来的帮助非常

  • 本文向大家介绍springboot2.0集成rabbitmq的示例代码,包括了springboot2.0集成rabbitmq的示例代码的使用技巧和注意事项,需要的朋友参考一下 安装rabbitmq 简介: rabbitmq即一个消息队列,主要用来实现应用程序的异步和解耦,消息缓冲,消息分发的作用. 由于rabbitmq依赖于erlang语言,所以先安装erlang: 添加erlang soluti

  • 主要内容:集成测试背后的原因,集成测试技术,集成测试方法,集成测试指南集成测试是单元测试后软件测试过程的第二个层次。在此测试中,软件的单元或单个组件在组中进行测试。集成测试级别的重点是在集成组件或单元之间交互时暴露缺陷。 单元测试使用模块进行测试,这些模块在集成测试中进行组合和测试。该软件使用许多软件模块开发,这些软件模块由不同的编码器或程序员编码。集成测试的目标是检查所有模块之间通信的正确性。 集成测试背后的原因 虽然软件应用程序的所有模块已经在单元测试中进行了测

  • 设计 集成测试包括 3 个模块:测试用例、测试环境以及测试引擎。 测试用例 用于定义待测试的 SQL 以及测试结果的断言数据。 每个用例定义一条 SQL,SQL 可定义多种数据库执行类型。 测试环境 用于搭建运行测试用例的数据库和 ShardingSphere-Proxy 环境。 环境又具体分为环境准备方式,数据库类型和场景。 环境准备方式分为 Native 和 Docker,未来还将增加 Emb

  • 我有一个用selenium进行单元测试和集成测试的项目。 当我用IntelliJ执行cucumber集成测试时,它工作得很好,您可以看到: 用Intellij执行cucumber集成测试 但是,当我执行mvn集成测试时,似乎没有发现任何联调: 故障保护输出 我定义了以下POM: > 文件夹结构是文件夹结构 mvn集成-测试输出https://drive . Google . com/file/d/

  • 15. 集成测试

  • 9.3. 集成测试 然而,不用将你的应用程序部署到应用服务器上或者实际连接到企业集成系统里就可以进行一些集成测试也很重要。这将使你可以测试以下内容: Spring contexts装配是否正确 使用JDBC或者ORM工具的数据访问。这将包括诸如SQL语句或者Hibernate的XML映射文件是否正确等等。 Spring为集成测试提供了一流的支持。这种一流的支持是通过Spring发行包里 sprin