关于对abstract class需不需要一个单独的unit test,业界有很多争论。

https://stackoverflow.com/questions/7569444/how-to-test-abstract-class-in-java-with-junit

不支持立场的观点是abstract不能被实例化,如果被实例化的话,那么一定有实现类,所以测实现类的时候,顺便就会测到abstract class的逻辑。

支持立场的观点是就算abstract不能被实例化,但是我有一些逻辑在abstract class,我不用等到具体的实现类去测试它,我可以自己去测试。

不管争论是什么,需不需要,我们暂且不讨论。这里说一下如果我们真有一些abstract class,里有一些method是有一些逻辑的,我们又想测试怎么办。大概思路有两个:

1 自己写一个subclass wrapper来进行测试。

2 用partial mock

AbstractService s = Mockito.mock(AbstractService.class,Mockito.CALLS_REAL_METHODS);

然后用s进行测试,如果里边有一些调用了abstract method,那么你可以stub它:

Mockito.when(service.getContactType()).thenReturn(AbstractService.ContactType.email);

原文:http://blog.csdn.net/hongchangfirst/article/details/80996528

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst

怎么测试abstract class相关推荐

  1. Vue面试题 70道题目及答案

    Vue面试题 Vue.js介绍 Vue.js是一个轻巧.高性能.可组件化的MVVM库,同时拥有非常容易上手的API Vue.js是一个构建数据驱动的Web界面的库. Vue.js是一套构建用户界面的 ...

  2. thinking-in-java(21)并发2

    think-in-java 并发前半部分(并发1)参见:  https://blog.csdn.net/PacosonSWJTU/article/details/104855730 [21.4.3]中 ...

  3. think-in-java(21)并发

    [README] 并发后半部分(并发2,从21.4.3中断开始)参见: https://blog.csdn.net/PacosonSWJTU/article/details/106878087 ; 本 ...

  4. android 系统 ---(1) 框架的代码组织介绍

    1.Android系统的层次如下: 2.项目目录简单分析如下: 3.telphony目录 文件 描述 CellIdentityCdma //描述电信通信标识 CellIdentityGsm 描述移动通 ...

  5. 抽象类及继承(本科生和研究生类)

    应用抽象类及继承编写程序.输出本科生及研究生的成绩等级.要求:首先设计抽象类student,它包含学生的一些基本信息,包括:姓名.学生类型.三门课程的成绩和成绩的等级等:其次,设计student类的两 ...

  6. Android Framework 记录之一

    描述 class BadXmlException extends SAXParseException xml解析错误 Children 子集 Element 一个元素 interface Elemen ...

  7. 基于PLC的烟草真空回潮控制系统设计

    目  录 摘  要 Abstract 第1章 绪论 1.1课题研究的目的及意义 1.2国内外研究现状 1.2.1国外研究现状 1.2.2国内研究现状 1.3本文研究内容 1.4课题研究的结构安排 1. ...

  8. JavaDay13 抽象类 、接口、多态

    tags : java基础 flag: blue @toc JavaDay13 抽象类 .接口.多态 一. abstract 抽象类 [需求] 要求继承于该类的子类,[强制]重写这些技能方法,不写就报 ...

  9. 陷波滤波器消除周期噪声python_车载功放本底噪声的机理及对策 wdele

    摘要:本文简要的介绍了车载功放系统噪声机理,对车载功放在实车测试中产生的噪声问题加以分析说明,并提出改善方案. [关键词]车载功放:噪声:噪声源:噪声测试 Abstract: This paper i ...

最新文章

  1. 华为热设计工程师待遇_华为给985毕业生开2万元的工资,是侮辱价?还是不自量力?...
  2. 中科院詹剑锋:美国出口管控对中国开源软件及产业的影响。
  3. 计算机软件员证书用途,软考证书的五大好处(详解)
  4. Python+Opencv实现无参数、全自动的Canny算法
  5. Android2.2缩略图类ThumbnailUtils
  6. python标志变量_Python 中的 global 标识对变量作用域的影响
  7. Javascript 调用百度地图不显示
  8. 第四:Pytest框架之命令行参数(二)
  9. FreeRTOS内核实现06:任务延时列表
  10. mysql行锁表怎么办_mysql - 表锁,行锁
  11. 关于今日头条小程序(字节跳动小程序)相关问题
  12. JVM 新生代,老年代,永久代
  13. share 接口的使用
  14. 计算机体系结构课后答案
  15. 2018年泰迪杯数据挖掘比赛c题
  16. 【定位】纯激光导航定位丢失/漂移问题的优化方案及思考
  17. 短距离的无线连接技术--蓝牙
  18. 安卓手机加密_安卓手机的万能加密插件 oversec
  19. Oracle-数据库所有查询命令
  20. 机房收费系统_刷卡充值功能的实现

热门文章

  1. 【管理系列-09】软件成本怎么评估,知己知彼才能做软件造价
  2. 攻防世界 - reverse - open-source
  3. C++中SIN的用法
  4. PointNet模型的Pytorch代码详解
  5. 解决网页无法复制粘贴(生活小妙招)
  6. 老男孩39期决心书——刘浩海
  7. js中的offsetLeft和style.left
  8. Vue本地应用(通过Vue实现常见网页效果)
  9. 腾讯云服务器安装oracle19c
  10. Linux查看磁盘和系统资源占用