`
诺铁
  • 浏览: 35395 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

单元测试的虚与实

阅读更多

<o:p></o:p>仍然是“单元测试还是集成测试”,“什么时候用mock object”,这个老话题。对这个东西的理解见仁见智,不必求同。
首先,单元测试是设计技术,不是测试结束,是写在接口定义好,代码实现前的,在这个前提下讨论。

在设计的过程中,有些东西是实的,有些东西是虚的,参见下图

UI---JSP也好,swing也罢
DB---mysql,oracle,包括dal,dao层
框架---spring,hivemind,或其他种种

以上这些只是些许例子。这些东西是实的。
在你的设计空间里,你所有的构思、你的想象、你的设想,那是虚的(无贬义)。

这样就简单了,实的实测,虚的虚测。
UI的测试就直接跑起来去操作,数据库、DAO测试,用DBUNIT或者操作完了去看数据库(不必强求自动化)。 spring用它自己的AbstractDependencyInjectionSpringContextTests去测测看组件装配的对不对。

虚的用mock object,可用的库也不少,easymock真的很easy,测试单个接口很方便。   mock是“伪”的意思,正好跟“虚”配一对。

在理清概念、设计出接口后,实际实现前,用一堆mock的实现去跑一跑看行不行的通,是不是有什么潜在的问题等,非常有帮助,这是模拟执行的概念了。

对实的东西进行实的测试,使整个应用建筑在坚固的地基上,对虚的东西进行虚的测试,放飞思想的翅膀,在落地前,你可以有充分的自由改变轨迹、追求完美。

  • 大小: 57.2 KB
分享到:
评论
3 楼 ttt路人乙 2008-10-22  
诺铁 写道
事实上,我这文说的是有些时候应该直接做集成测试,不用MockObject

2 楼 诺铁 2008-10-09  
事实上,我这文说的是有些时候应该直接做集成测试,不用MockObject
1 楼 qiufei123963 2008-10-09  
lz,最近要做一个关于MockObject的东东~!

看了.LZ的文章, 一个很简单的东东, 感觉被说得云里雾里的~/

呵呵.

为什么要用MockObject,以下是我的一点看法:
1. 如果其它模块引起本测试模块的错误

2. 隔决其它模块的开发状态,不管其开发完成没有,只要提供接口就OK

3. 对于一些较慢的操作,很难实例化的对象

相关推荐

    大型程序框架——Cpp类的学习-实类与虚类

    本文将深入探讨“大型程序框架——Cpp类的学习-实类与虚类”这一主题,旨在帮助开发者理解如何在C++中利用类和虚类来构建可扩展且灵活的程序结构。 C++是一种面向对象的编程语言,它支持类作为其核心特性,类是创建...

    2020年人教版九年级物理中考复习 第5章 透镜及其应用 单元测试卷(无答案).docx

    《2020年人教版九年级物理中考复习——第5章 透镜及其应用》单元测试卷,主要考察了光学领域中透镜的基本性质、成像规律以及其在实际生活中的应用。试题涵盖单选题和多选题,旨在检验学生对凹透镜和凸透镜的理解程度...

    CppUnit使用指南

    CppUnit 是一个流行的 C++ 测试框架,它用于编写和执行单元测试,确保代码的正确性和可靠性。在 CppUnit 中,测试的核心概念是 `Fixture` 和 `TestCase`。 `Fixture` 是一个类,它代表了被测试的实体,可能是单个...

    .NET-MVC的UnitTesting:学习使用.NET MVC进行单元测试的项目

    单元测试这部分时,我们一般会使用虚方法或接口来模拟数据库操作,确保数据访问代码正确执行查询和更新。 在"C#"环境下,我们可以使用Moq或NSubstitute等库来创建模拟对象,用于替换那些在测试中不需要的真实依赖。...

    三年级语文上册 第七单元测试题2(无答案)新人教版 试题.doc

    这篇文档是针对小学三年级学生的一份语文上册第七单元的测试题,主要涵盖汉字拼音、反义词、成语填空、句子仿写、句子排序、课文理解及阅读理解等多方面的语文基础知识。以下是对这些知识点的详细解释: 一、汉字...

    2021届高考数学一轮复习第一部分考点通关练第七章平面解析几何单元质量测试七课件新人教B版

    最后,对于双曲线上的点到焦点的距离问题,需要结合实半轴a和虚半轴b的关系,以及双曲线的标准方程进行解答。这要求学生不仅要理解双曲线的性质,还要能够将几何知识应用于坐标系中,找到实际的数学表达。 综上所述...

    21春东财《信息系统分析与设计》单元作业1_2参考答案.docx

    18. 驱动程序是为单元测试而创建的模块,模拟其他未完成模块的行为,选项B正确。 19. 抽象水平是一种将系统分解为逐步细化层次的建模技术,选项D正确。 20. 模块内聚是指模块内部的功能紧密程度,选项B正确。 21....

    CppUnit 快速使用指南

    它的主要目的是提供一个工具来管理和自动化 C++ 代码的单元测试,帮助开发者确保代码的正确性和稳定性。CppUnit 的核心思想受到了极限编程(XP)的启发,强调在开发过程中频繁地进行测试,以尽早发现和修复问题。 #...

    2015_2016学年高中语文第四单元情动于衷而形于言单元测试语文版必修1

    借景手法的讨论引出了窗在实与虚之间转化的作用。通过漏窗的应用,墙上的一个实际空洞被转化为了“虚”的画框,使得观赏者可以透过这个“虚”的窗框,将外界的景色艺术化地展现在眼前,从而弱化了墙的封闭感,增强了...

    21春东财《信息系统分析与设计》单元作业2_2参考答案.docx

    《信息系统分析与设计》这门课程的单元作业2_2主要涵盖了信息系统开发的多个核心概念。以下是根据题目内容解析的一些知识点: 1. 数据存储:在信息系统中,数据存储是保存数据的地方,便于后续处理和访问。它是系统...

    C++面向对象程序设计实训课设网吧管理系统代码.rar

    - **测试**:编写单元测试以验证各个类和方法的正确性,确保系统稳定运行。 通过这个实训项目,你将有机会深入了解C++的面向对象特性,并学习如何将这些知识应用到实际问题中,提高编程能力和软件设计水平。同时,...

    宽带接入-MA5606T实训.pptx

    本实训主要围绕华为的MA5606T和MA5680T两款设备进行,这两种设备广泛应用于宽带接入网络的建设中,尤其是MA5606T作为小型化ONU(光网络单元),常用于住宅和小型企业用户。 【MA5606T实训】主要分为以下几个部分: ...

    面向对象软件开发实训资料-22-23-1-本科.zip

    10. **测试与调试**:了解单元测试的重要性,学习使用JUnit等工具进行测试,以及如何调试代码,找出并修复问题。 这些内容旨在通过理论学习和实践操作,使学生能够熟练掌握面向对象软件开发的核心技术,并能灵活...

    头歌实训作业答案c++.docx

    4. **测试**:对程序进行单元测试和集成测试。 5. **调试**:根据测试结果修正错误。 6. **文档**:编写清晰的注释和文档。 #### 五、学习资源 - **书籍** - 《C++ Primer》:全面介绍 C++ 的基础知识。 - ...

    2020四年级语文下册第一单元知识小结新人教版

    - 重点句,如“从‘无’中看出‘有’,从‘虚’中看出‘实’”,体现了孩子们丰富的想象力。 5. 考试热点: - 按课文内容填空:考察学生对课文内容的理解和记忆。 - 深刻含义的句子:如《天窗》中的中心句,测试...

    东北财经大学20春《信息系统分析与设计》单元作业一(参考答案).docx

    单元作业一主要考察了以下几个核心概念: 1. **描述模块内部逻辑的方法**:这部分内容涉及到系统设计的细节,如A选项的结构化英语,C选项的流程图,D选项的伪码都是描述模块逻辑的常用工具,而B选项的顺序图主要...

    第 10 章:面向对象方法学.zip

    单元测试专注于单个类或方法,集成测试检查类之间协作的正确性,系统测试则是在完整系统上的全面验证。 除了基本概念,面向对象方法学还包括设计模式,它们是解决常见设计问题的最佳实践。例如,工厂模式提供了一种...

    C++代码设计与重用

    12. **单元测试**:通过编写测试用例来验证代码的正确性,单元测试是保证代码质量的重要手段。使用如Google Test等单元测试框架可以帮助开发者确保代码的稳定性和可重用性。 以上内容只是C++代码设计与重用的一部分...

    21春东财《审计学概论》单元作业三参考答案.docx

    如果财务报表存在重大虚盈实亏且不调整,或者内部控制极度混乱,会计记录不完整,注册会计师可能出具否定意见报告。若其他信息存在重大错报且未得到更正,注册会计师可能需要考虑在审计报告中处理这些错报,甚至在...

    2017_2018学年七年级语文下册第五单元20古代诗歌五首习题新人教版2018082245

    * 诗歌的语言是诗歌的基础,诗歌的语言可以分为两种:实写和虚写。 * 《望岳》诗歌的语言是实写,诗歌描摹了泰山的雄伟气势。 * 《登飞来峰》诗歌的语言是虚写,诗歌描摹了诗人的情怀和抒情。 * 诗歌的esthetic ...

Global site tag (gtag.js) - Google Analytics