如何测试 Spring 集成

2023-11-21

我是 Spring 集成的新手。我有 ActiveMQ,有一个“responseQ”。因此,当消息到达“responseQ”时 -> painResponseChannel -> Transformer -> processResponseChannel -> beanProcessing。我有以下设置:

    <jms:message-driven-channel-adapter  extract-payload="true"
                                     channel="painResponseChannel"
                                     connection-factory="connectionFactory"
                                     destination-name="responseQ"/>

    <integration:channel id="painResponseChannel" />

    <integration-xml:unmarshalling-transformer
        id="defaultUnmarshaller"
        input-channel="painResponseChannel"
        output-channel="processResponseChannel"
        unmarshaller="marshaller"/>

    <integration:channel id="processResponseChannel" />

    <integration:service-activator
        input-channel="processResponseChannel"
        ref="processResponseActivator"/>

    <bean id="processResponseActivator" class="com.messaging.processor.PainResponseProcessor"/>


    <bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
      <property name="classesToBeBound">
        <list>
            <value>com.domain.pain.Document</value>
        </list>
      </property>
    </bean>

所以我的问题是如何端到端测试这个?如何断言变压器的输出或断言通道上的内容?我尝试过但失败了...希望有人可以提供帮助。

提前致谢。 通用汽车

我进行了这样的测试:在我的测试上下文中创建了一个出站通道适配器,它启动使用 testJmsQueue 通道将消息放入 activeMQ 上。并且还为 processResponseChannel -> testChannel 创建了一个 BRIDGE。我期待 receive() 方法能给我一些回报。但我认为问题在于它太快了,当它到达 receive() 方法时,管道已经结束。

测试上下文如下所示:

<integration:bridge input-channel="processResponseChannel" output-channel="testChannel"/>

<jms:outbound-channel-adapter id="jmsOut" destination-name="responseQ" channel="testJmsQueue"/>

<integration:channel id="testJmsQueue"/>

<integration:channel id="testChannel">
    <integration:queue/>
</integration:channel>

然后在单元测试中我有这个:

@ContextConfiguration(locations = "classpath*:PainResponseTest-context.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class PainResponseTest {

private String painResponseXML;

@Autowired
MessageChannel testJmsQueue;
@Autowired
QueueChannel testChannel;

@Before
public void setup() throws Exception {

    ClassPathResource cpr = new ClassPathResource("painResponse.xml");
    InputStream is = cpr.getInputStream();
    StringWriter writer = new StringWriter();
    IOUtils.copy(is, writer, "UTF-8");
    painResponseXML = writer.toString();
}

@Test
@SuppressWarnings("unchecked")
public void shouldDoSomething() throws InterruptedException {

    testJmsQueue.send(MessageBuilder.withPayload(painResponseXML).build());

    Message<String> reply = (Message<String>) testChannel.receive(0);
    Assert.assertNotNull("reply should not be null", reply);
    String out = reply.getPayload();
    System.out.println(out);
}
}

==================== TEST OUTPUT =====================
java.lang.AssertionError: reply should not be null

得到的答复为空。


对于端到端测试,您可以执行以下操作;

  • 在嵌入式配置中使用 activemq 发送 JMS 消息
  • 在 processResponseChannel 上注入通道拦截器
  • enable DEBUGlevel - Spring Integration 提供了非常好的和有用的日志,跟踪通道和服务激活器进出的消息
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何测试 Spring 集成 的相关文章

  • Spring:如何将 KeyHolder 与 PostgreSQL 一起使用

    最近迁移到 POSTGRESQL 我试图获取在数据库表中创建新条目时唯一生成的密钥 桌子screenstable看起来像这样 CREATE TABLE screenstable id serial NOT NULL screenshot b
  • Spring Jsps 和跳转到锚点

    我想知道 Spring 中是否有某种方法可以在控制器中指定我希望将客户端发送到我用于视图的 jsp 页面中的特定锚点 我的 jsp 页面中有一个部分 由 errors锚点 显示发生的任何表单错误 每当我需要在模型验证失败后将它们发送回 js
  • Spring RestController + Junit 测试

    我正在玩 springframework 的 spring test 我的目的是在我的休息控制器中测试以下 POST 方法 RestController RequestMapping project public class Project
  • Spring Data JPA 中的审计和 @Embedded

    我在 JPA 审计方面遇到问题 Embedded成员 考虑以下示例场景 我在 Oracle DB 中设置了一个测试表 CREATE TABLE AUDIT TEST ID NUMBER 38 NOT NULL PRIMARY KEY CRE
  • 更新分页。是否可以?

    他们是否存在一些方法来处理更新分页 例如我有 100 行类型 Id private Integer id Column private boolean flag Column private Date last 一开始它们看起来像 id f
  • Spring Boot 访问 H2 控制台

    我有一个基本的 Spring Boot 应用程序 嵌入式 Tomcat Thymeleaf 模板引擎 我创建了这个 bean 来访问控制台 Bean public ServletRegistrationBean h2ConsoleServl
  • 使用 Spring Boot 外部 log4.properties 文件

    我正在使用可执行 jar 运行我的应用程序 我在 resources 文件夹中有 log4j properties 在产品中 我想覆盖它并将其放在外部目录中 我如何使用 Spring Boot 做到这一点 Dlogging config p
  • 运行 Spring 单元测试的 AOP 问题

    我有一个 Spring Web 应用程序 配置为使用 JDK 代理进行 AOP AOP 注解 例如 Transactional 在接口上声明 而不是在实现类上声明 应用程序本身工作正常 但当我运行单元测试时 它似乎尝试使用 CGLIB 来实
  • 如何在 IntelliJ Community Edition 2016.1.3 中启用 spring 支持

    我有很好的纯Java基础知识 只要不涉及 XML 配置和项目管理工具 我就很好 真正让我困惑的是项目管理工具 例如 Maven Gradle 我正在学习Spring 它让我很困惑 因为它涉及很多XML文件并且没有明确的解释 我正在学习Spr
  • Spring Boot Rest API @RequestBody 中的 @Valid 与 @Validated [重复]

    这个问题在这里已经有答案了 我拥有开发 REST API 的 NET 背景 现在使用 spring boot 从事 java REST 项目 首先 我在控制器 RequestBody 上的验证停止工作 在尝试修复它时 我看到了不同的实施方法
  • Spring属性文件设置默认值

    我的 war 文件之外有一个属性文件 系统管理员使用该文件来关闭某些系统功能 它在我的本地计算机上运行得很好 但是当我们部署到开发环境时 属性文件未上传 应用程序无法启动 我想知道是否有一种方法可以在我的 applicationContex
  • 如何从 Jersey-2 请求过滤器访问 wicket 会话?

    在 Jersey 1 x 中 我们从 Jersey 会话属性访问 Wicket 会话 如此处所述https stackoverflow com a 15767824 1399659 https stackoverflow com a 157
  • 使用 Apache Camel 发送多个 http 请求

    我正在尝试将 GET HTTP 请求发送到分页端点 挑战是我事先不知道页面大小 因此我必须发送请求来获取页码并进行交互直到最后 我尝试过 Camel HTTP 但无法让它根据第一个 或上一个 响应发送动态请求 我目前正在测试recipien
  • Maven 不会使用 1.7 JDK 编译 Java 7

    我一定是反对 Maven 的 因为每次我尝试使用它时 我都会花很多时间挣扎 然后就放弃了 我的最新情况是 尽管有 1 7 JDK 但我无法编译 Java 7 源代码 这是输出mvn compile 有趣的是 当我使用 Maven 3 0 4
  • Flowable服务任务中的Spring bean注入问题

    我有一个关于Flowable服务任务中的spring bean注入的问题 为什么只有这种带有静态修饰符的注入才起作用 它的逻辑是什么 我必须在 Flowable java 服务任务中注入一个 spring bean 并且我测试了一些不同类型
  • MockMVC 给出 HttpMessageNotReadableException

    我仍在学习测试方法 并且正在尝试让 MockMvc 测试为我工作 这是一个简单的 REST 控制器 此时仅使用帖子中的 json 信息进行一些身份验证 我实际上已经实现了代码 所以我知道它正在工作 因为我收到了带有正确输入的正确响应和我放在
  • Spring父上下文和子上下文有什么区别?

    我正在阅读 spring doc 核心容器 我想了解其目的参考父级当注入协作者时 我发现了父上下文子上下文或父容器和当前容器的概念 这是我感到困惑的部分 文档的这一部分 https docs spring io spring docs cu
  • java.net.SocketException:使用 Spring 的 RestTemplate 来自服务器的意外文件结尾

    我已经检查了有关类似主题的几个问题 答案 但找不到适合我的情况的正确答案 我正在使用 Spring 的 RestTemplate 但无法从第三方服务器获取响应 但出现以下异常 Exception in thread main org spr
  • 如何在 Spring Data MongoDB 中仅返回查询的特定字段?

    我们如何在 Spring Data Mongo 中选择特定字段 我尝试了以下操作 但我得到了强制转换异常Foo to String Using Query Query value path 0 fields path 0 String fi
  • Spring:了解 @SessionAttributes 与 @Scope('session') 之间的区别

    Case 1 Scope Session public class Employee Controller public class EmployeeController Autowired private Employee employe

随机推荐

  • 如何在 Polymer 2.0 中启用 Shady DOM?

    聚合物 1 x 用途阴暗的 DOM默认情况下 但可以在初始化时通过设置来更改window Polymer导入前的对象polymer html如下 然而 Polymer 2 0 似乎使用影子 DOM不管window Polymer dom s
  • Twitter bootstrap:模式淡入淡出

    我的 twitter bootstrap 模式有问题 当我没有的时候它工作得很好 fade我的元素上的类 一旦我添加它 模式就不会显示 我将问题追查到这一行 我认为 doAnimate this backdrop one transitio
  • 如何使用 cmake 设置嵌套子目录的 Visual Studio 过滤器

    我有以下结构 Main dir CMakeLists txt File cpp File hpp Dir dir CMakeLists txt File1 cpp File1 hpp File2 cpp File2 hpp 主要 CMake
  • 如何对对象数组进行字符串化?

    我创建了一个需要存储并保留到另一个页面的对象数组 对象数组与此类似 var cheese array name Chedder age 34 smelly true name Brie age 4 smelly false name Blu
  • IE 中的 HTML 实体和字符集

    我正在显示 html 实体 10003 复选标记 在使用 iso 8859 1 作为字符集的 html 文档中 在 Firefox 中 它显示为复选标记 在 IE 中 它显示为一个方框 切换到 UTF 8 似乎没有什么区别 有没有一种可靠的
  • Javascript正则表达式字符串中的货币符号

    所以我有一个格式化字符串可以是 00 or 00我想获取货币符号 这里是我正在使用的代码 currencySymbol format match p Sc 我希望currencySymbol 等于 或 但它不起作用 currencySymb
  • MS SQL Server - 通过网络批量插入

    我有一个使用 MS SQL Server 的应用程序 我需要从文件中进行批量插入 症结在于数据库和我的应用程序将托管在不同的服务器上 通过网络进行批量插入的最佳方法是什么 到目前为止我想到的两个想法 从应用程序服务器共享数据库服务器可以找到
  • 无法使用bundle exec找到rake

    当我尝试执行 捆绑执行耙任何东西 我收到错误 Could not find rake 10 1 0 in any of the sources Run bundle install to install missing gems 但是当我执
  • 线程化 Delphi ADO 查询

    我有一个查询代码 每次需要从数据库获取数据时都可以调用它 并且我希望它是线程化的 不知道如何在线程中实现此代码 以便我可以重用此代码 基本上 我希望此代码在线程中 我知道如何在线程内创建一个简单的数据库查询 但想要一些可以重用的东西 谁能指
  • JavaScript获取url段和参数

    我读过一些问题 但我仍然不知道该怎么做我有一个网址example com event 14aD9Uxp p 10 在这里我想得到14aD9Uxp和 p 的值我尝试过使用split p 但这不起作用我想使用正则表达式 但我不太明白如何使用它
  • 在桌面上运行时如何将 Windows 10 通用应用程序的窗口最大化至全屏?

    使用 Windows 10 或 Windows 8 1 WinRT 构建通用应用程序时 是否可以强制应用程序的主窗口在启动时最大化 这显然是应用程序在移动设备上运行时的自然行为 但在桌面上运行时则不然 使用 WinForms 这当然是可能的
  • 在 Spring Boot 中使用 Angular 启用 Cors,仍然存在 Cors 错误

    我为所有来源和标头启用了 cors 但当我调用 a 时 我仍然收到 cors 错误get从我的角度应用程序到 Spring Boot 的方法 来自控制台的 Cors 错误 Access to XMLHttpRequest at http l
  • 返回任务是否违反了 CQS 原则?

    CQS 原则 https en wikipedia org wiki Command E2 80 93query separation 指出命令应返回 void 对于异步方法的建议是永远不要返回 void https msdn micros
  • 将任何 XML 文档绑定到 WPF TreeView

    我想使用 TypeConverter 将任何 XML 文档绑定到 WPF TreeView 我最初的解决方案是使用递归 但是当文档很大时 UI 就会严重依赖 以下链接讨论了 TypeConverter 但针对特定的节点 元素组合 http
  • 使用 FileReference 下载时丢失扩展名

    我需要用户从我的应用程序下载 JPEG 文件 但是 当用户更改文件名时 将下载保存的文件 不带扩展名 例如 我正在使用 FileReference download 并将默认文件名设置为 demoPic jpg 并且用户的 Windows
  • “@android:drawable/ic_”与“@*android:drawable/ic_”

    有人知道在哪里可以找到有关星号的文档吗 它似乎覆盖了子类 android R drawable 中 私有 变量的保护 android 用于访问私有资源 这些资源可能会在两个 Android 版本之间更改或删除 因此您永远不应该使用它们 这仅
  • 将所有 Neo4J 数据库加载到 RAM

    我正在尝试将所有 Neo4j DB 加载到 RAM 以便查询速度更快 当将属性映射传递到图形创建时 我没有看到该过程像以前那样占用更多的内存空间 而且它也与磁盘上的文件空间不成比例 可能是什么问题呢 以及如何修复它 谢谢 Neo4j 延迟加
  • 删除 Dask 中的空分区

    从 CSV 加载数据时 某些 CSV 无法加载 从而导致分区为空 我想删除所有空分区 因为某些方法似乎不适用于空分区 我尝试过重新分区 其中 例如 repartition npartitions 10 有效 但大于此值仍可能导致空分区 实现
  • Babel 6 regeneratorRuntime 未定义

    我正在尝试在 Babel 6 上从头开始使用 async await 但我得到了regeneratorRuntime没有定义 babelrc 文件 presets es2015 stage 0 package json 文件 devDepe
  • 如何测试 Spring 集成

    我是 Spring 集成的新手 我有 ActiveMQ 有一个 responseQ 因此 当消息到达 responseQ 时 gt painResponseChannel gt Transformer gt processResponseC