首页 > 其他分享 >ServiceA不应该直接调用ServiceB派生的Dao方法

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

时间:2023-10-21 21:15:31浏览次数:31  
标签:服务 ServiceB ServiceA Dao 单元测试 测试 方法

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

背景

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

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

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

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

原则

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

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

缺点:

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

解决方案:

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

  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,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

MegadotnetMicroMsg_thumb1_thumb1_thu[2]

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

标签:服务,ServiceB,ServiceA,Dao,单元测试,测试,方法
From: https://www.cnblogs.com/wintersun/p/17779544.html

相关文章

  • 实体类里面调用DAO层
    一、背景 项目在启动的时候会把数据字典加载到redis中,实体类的字典名称通过get获得,这时候只有一个数据库。现在业务做了修改,后台是多数据源,字典加载到redis中只加载到了主库,如果从从库获取数据,从库的数据字典获取不到,所以我从实体类下手。二:代码 工具类:importcom.spcp.q......
  • java框架中的controller层、dao层、domain层、service层、view层【转】
      1.Controller层:接口层,用户访问请求时对接。  Controller层负责具体的业务模块流程的控制,在此层里面要调用Serice层的接口来控制业务流程,控制的配置也同样是在Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归......
  • jsp与Dao层合作实现分页功能
    studentList.jsp里面加样式居中和分页栏居中:.pagination{    text-align:center;}  分页栏: <divclass="pagination">    <c:iftest="${currentPage>1}">        <ahref="${pageContext.request.contextPath}/ShowStudentServlet?pa......
  • The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online (The 2nd Universal Cup
    The2018ACM-ICPCAsiaQingdaoRegionalContest,Online(The2ndUniversalCup.Stage1:Qingdao)J-PresstheButton\(1\leqa,b,c,d\leq10^6\)题解容易发现存在循环节,每次位于\(gcd(a,c)\)的倍数的位置所以我们考虑处理一个循环节内的情况如果\(v\le......
  • Gym 104270 The 2018 ICPC Asia Qingdao Regional Programming Contest (The 1st Univ
    A.SequenceandSequenceB.KawaExam可以发现,对答案会产生影响的只有割边,把所有边双缩起来,然后就是一个森林。考虑一个树的时候怎么做,就是对于每条边求出这条边两端的众数个数,考虑线段树合并,每次动态维护子树内的众数和子树外的众数。#include<iostream>#include<cstdio>......
  • Android GreenDao数据库使用
    GreenDao介绍GreenDao是一个开源的AndroidORM嵌入式关系数据库,通过将Java对象映射到数据库表(称为ORM,“对象/关系映射”),使用一个简单的面向对象的API来存储、更新、删除和查询Java对象。GreenDao特点●最佳性能(可能是Android中最快的ORM),基准测试也是开源的;●......
  • org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
    问题描述在我写好了后端代码之后,就一直启动不成功,爆出来这个错误,一直说什么,哪里哪里配置不行,哪里哪里没有注解,哪里哪里不一致等,我看了半天~问题解决原来是这里:之前我没有加RestControlller的注解加上之后:数据显示啦!......
  • Web3.0时代的全新合作模式:DAO
    你有没有遇到这种情况:我有一个很棒的想法,想要开发出一个“改变世界”的项目,但是我既没有技术,也没有人脉,甚至没有资金,导致我始终没有办法开始行动,痛苦万分。就比如在黑客大赛上,我想到一个一定可以得奖的点子,但是却找不到合伙人,也无法独自完成,导致机会白白溜走。今天我就介绍一个可......
  • android中使用greedDao
     android中使用greedDao一工具说明Greendao是一个在android中快速生成数据库操作的orm工具,最近在项目中使用到,具体操作记录如下,供以后使用快速集成。该项目的源码在gitee的镜像地址为:【https://gitee.com/freewsf/greenDAO_1#add-greendao-to-your-project】二使用方式1.在......
  • Java实现关系型数据库工具类JdbcUtils系列九:通用DAO
    Java实现关系型数据库工具类JdbcUtils系列九:通用DAO一、创建对应数据库表的实体类二、数据库连接池Druid工具类三、DAO类四、BaseDAO五、DatabaseInfoDao六、通用DAO测试类一、创建对应数据库表的实体类数据库表结构CREATETABLE`databaseInfo`(`id`bigint(11)NOTNULLAU......