java - jms集成开发的单元测试

标签 java unit-testing jms integration

最近我从事 jms 集成工作。消息提供方也在并行发展。我手头上的只是一个 .xsd 架构和示例消息。

因为会有很多场景我必须检查。例如数据库中已存在的数据记录、错误/损坏消息等。

如何在本地进行集成测试/单元测试?

提前致谢!

最佳答案

集成测试和单元测试之间存在天壤之别。

我对单元测试的解释是针对单个类(单元)的白盒测试,重点是测试内部逻辑。这通常是通过 JUnit 完成的。我使用模拟(Mockito、Powermock)将类与其对其他类或其环境(文件系统、网络、CPU 线程、时间等)的任何依赖项隔离开来。在您的情况下,您应该有单独的组件来处理网络、(取消)编码、业务逻辑和存储。在我看来,为包含业务逻辑的组件编写单元测试是最简单且最有用的。其他的则更特定于框架/供应商,并且通常更难进行单元测试;它们将被集成测试覆盖。

集成测试涵盖应用程序的端到端流程。要创建它们,您需要实际设置所有应用程序组件、环境和远程系统。例如,您可以创建一个测试消息提供程序,将 JMS 消息发送到您的应用程序,您可以运行嵌入式 Web 服务器(例如 Jetty)来托管您的应用程序,并且可以运行内存数据库作为测试存储。我为此使用的一个很好的框架是 Arquillian但肯定还有许多其他好的解决方案。

编辑:阅读您的评论后。

单元测试不涉及与环境(网络、文件系统等)的任何交互,即使您使用自己的 stub 组件通过本地网络向您发送真实消息也是如此。那就是集成测试。

一旦您使用由另一个团队创建和管理的消息提供程序进行测试,您就脱离了自动化测试的范围。这是因为您无法保证此外部消息提供程序始终可用。自动化测试应该可以在您自己的计算机上独立运行,最多只需单击一次。

关于java - jms集成开发的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32221731/

相关文章:

java - 如何在集群环境中使用Spring Security OAuth

java - 适用于高流量网站的 Play Framework、Java、Apache、PostgreSQL、JPA 和 Hibernate

javascript - Karma Angular - 找不到名称 'X'

java - 如何做包含JDBC和JMS事务的XA事务?

Apache Camel - 动态构建端点和端点

queue - 替换 jms 队列中的消息

Java - 创建伪 native 类型

java - 如何每次在线程循环中更改 TextView 中的文本

javascript - Jasmine 允许深度嵌套描述套件有多深?

unit-testing - 如何将 springSecurityService 注入(inject) Grails 域类以在 Grails 2.4.2 中进行 Controller 单元测试