jms集成开发之单元测试
Unit test for jms integration development
最近我在为 jms 集成工作。消息提供者端也在并行发展。我手上的只是一个 .xsd 架构和示例消息。
因为会有很多场景我必须检查。比如数据库中已经存在的数据记录,bad/broke消息等
如何在本地进行集成 test/unit 测试?
提前致谢!
集成测试和单元测试之间存在天壤之别。
我对单元测试的解释是针对单个 class(单元)的白盒测试,它侧重于测试内部逻辑。这通常使用 JUnit 来完成。我使用模拟(Mockito、Powermock)将 class 与它对其他 class 或其环境(文件系统、网络、CPU 线程、时间等)的任何依赖关系隔离开来。在您的情况下,您应该有单独的组件来处理网络、(取消)编组、业务逻辑和存储。在我看来,为包含业务逻辑的组件编写单元测试是最简单和最有用的。其他的会更 framework/vendor 具体并且通常更难进行单元测试;它们将包含在集成测试中。
集成测试涵盖应用程序的端到端流程。要创建它们,您需要实际设置所有应用程序组件、环境和远程系统。例如,您可以创建一个向您的应用程序发送 JMS 消息的测试消息提供程序,您可以 运行 一个嵌入式网络服务器(例如 Jetty)来托管您的应用程序,并且您可以 运行 一个内存数据库作为测试存储。我为此使用的一个很好的框架是 Arquillian,但肯定还有许多其他好的解决方案。
编辑:阅读您的评论后。
单元测试不涉及与环境(网络、文件系统等)的任何交互,即使当您使用自己的存根组件通过本地网络向您发送真实消息时也不涉及。那就是集成测试。
一旦您使用由另一个团队创建和管理的消息提供程序进行测试,您就超出了自动化测试的范围。这是因为您无法保证此外部消息提供程序始终随处可用。自动化测试应该 运行 在您自己的机器上独立启用,最多只需单击一次。
最近我在为 jms 集成工作。消息提供者端也在并行发展。我手上的只是一个 .xsd 架构和示例消息。
因为会有很多场景我必须检查。比如数据库中已经存在的数据记录,bad/broke消息等
如何在本地进行集成 test/unit 测试?
提前致谢!
集成测试和单元测试之间存在天壤之别。
我对单元测试的解释是针对单个 class(单元)的白盒测试,它侧重于测试内部逻辑。这通常使用 JUnit 来完成。我使用模拟(Mockito、Powermock)将 class 与它对其他 class 或其环境(文件系统、网络、CPU 线程、时间等)的任何依赖关系隔离开来。在您的情况下,您应该有单独的组件来处理网络、(取消)编组、业务逻辑和存储。在我看来,为包含业务逻辑的组件编写单元测试是最简单和最有用的。其他的会更 framework/vendor 具体并且通常更难进行单元测试;它们将包含在集成测试中。
集成测试涵盖应用程序的端到端流程。要创建它们,您需要实际设置所有应用程序组件、环境和远程系统。例如,您可以创建一个向您的应用程序发送 JMS 消息的测试消息提供程序,您可以 运行 一个嵌入式网络服务器(例如 Jetty)来托管您的应用程序,并且您可以 运行 一个内存数据库作为测试存储。我为此使用的一个很好的框架是 Arquillian,但肯定还有许多其他好的解决方案。
编辑:阅读您的评论后。
单元测试不涉及与环境(网络、文件系统等)的任何交互,即使当您使用自己的存根组件通过本地网络向您发送真实消息时也不涉及。那就是集成测试。
一旦您使用由另一个团队创建和管理的消息提供程序进行测试,您就超出了自动化测试的范围。这是因为您无法保证此外部消息提供程序始终随处可用。自动化测试应该 运行 在您自己的机器上独立启用,最多只需单击一次。