ServiceA不应该直接调用ServiceB派生的Dao方法

ServiceA不应该直接调用ServiceB派生的Dao方法

背景

     服务层单元测试是指针对应用程序中服务层代码的测试。服务层通常包含业务逻辑和数据处理代码,因此服务层单元测试的目标是验证这些代码的正确性和可靠性。通过编写针对服务层方法的测试用例,并模拟服务层的依赖项,我们可以在隔离环境中对服务层代码进行测试,以确保它的功能符合预期。这种测试方法有助于提高整个应用程序的代码质量和稳定性。

我们在ServiceA中直接调用ServiceB.lambdaQuery()进行数据DAO访问

MybatisPlus的官方 “链式调用 lambda 式”

我们在单元测试中,似乎已经不容易做mock, 因为我们原本用意应mock对应依赖的service方法。

原则

  • 本质是从业务方法角度每个业务常见 需要自己的方法,而不是直接依赖其他Service持久层方法。假设后续切换其他持久层框架则难以扩展。也可测试性。

  • 顺理清楚上下文测试ServiceA, Mock serviceB

缺点:

  1. 强依赖mybatisPlus, 基类方法mock关系负载

解决方案:

  1. 定义ServiceB的业务逻辑方法后,在其中方法调用 ,则可以隔离。

  2. 在ServiceA中引用DaoB的数据访问对象。

Summary

1. 在应用程序中,服务层起着至关重要的作用,因此编写针对服务层的单元和集成测试非常重要。在测试服务层组件时,需要考虑不同的测试类型和策略。使用适当的测试技术,可以确保服务层的代码质量,提高应用程序的整体稳定性和可靠性。

2. 单元测试用于测试单个组件或方法的功能。这些测试通常独立运行,不依赖于其他组件或服务。在Spring Boot中,可以使用JUnit和Mockito等框架编写单元测试。
集成测试则用于测试多个组件或服务之间的交互。这些测试验证整个系统的工作流程,而不仅仅是单个组件。在Spring Boot中,可以使用Spring Boot Test和Spring Integration Test等框架编写集成测试。
为了确保微服务的可靠性和稳定性,编写全面的单元和集成测试套件至关重要。这些测试可以帮助开发人员及早发现问题,并确保应用程序在实际环境中按预期工作。

3. Apache Commons LangApache Commons Lang是一个Java库,提供了许多帮助处理核心Java类的实用方法。这个项目的单元测试非常全面,可以作为单元测试的最佳实践示例。



今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管管,团队建设 有参考作用 , 您可能感兴趣的文章:
领导人怎样带领好团队
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变

如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。