首页 / 知识
关于单元测试:对象模拟是否被广泛使用?
2023-04-16 13:33:00

Is object mocking used extensively?我很好奇你们中有多少人将对象的模拟(如JMock,NMock,RhinoMocks等框架与单元测试框架结合在一起)纳入您的日常开发过程。 你有什么经验? 您会看到,我是在GIS(地理信息系统)平台上开发的,该平台的大部分工作都与某种处理数据的方式有关。 由于其数据对象模型非常复杂(许多类和接口,全部基于COM),因此模拟起来也非常困难且麻烦。 在这种情况下,编写测试套件时,模拟会产生大量开销。 我想知道是否有人处于类似情况,或者仅仅是,嘲笑(无论您处于何种情况)如何为您服务。 在我最近从事的项目中,我们在单元测试方法中广泛使用了模拟对象。该项目是100%Java,大小适中(大约100,000行未注释的代码)。它是基于Swing的桌面应用程序-我们发现测试用户界面逻辑的唯一有效方法是通过MVC变体设计,该设计允许我们使用模拟对象代替实际的Swing用户界面类进行自动化测试。我们还在数据访问层(Hibernate / DAO)的测试中广泛使用了模拟。 在用户界面使用中,Mocks易于构建。应用程序的设计(Fowler Passive View)可以轻松地包含模拟。在测试数据访问层时使用的模拟不是这种情况。但是我可以说这显然值得付出努力。实际上,大多数"努力"实际上都集中在提出一种可重用的解决方案上,该解决方案将开发人员创建每个单独的模拟程序所需的工作减至最少。我建议花些时间研究一下适合您情况的方法,该方法可以轻松模拟GIS数据层。那-或只是手动模拟每个课程。无论哪种方式,运行基于模拟的自动化单元测试的能力都是值得的... 在我的情况下,模拟工作确实很好。但是我使用的是Python,它是如此动态,它使涉及测试的许多事情变得非常容易。 在像您这样的情况下,当应用程序主要由数据驱动时(据我所知),模拟可能没有那么有用。仅将数据传入并看着它出来就足以进行测试。我只是要确保应用程序足够模块化,因此该方法可以应用于相当小的组件。 Dave Bouman发起了一项计划,试图建立Mocks社区库,以用于ArcObjects相关的单元测试。他的博客和这个svn存储库包含与单元测试GIS系统相关的大量信息 http://blog.davebouwman.net/CategoryView,category,Unit%2BTesting.aspx http://svn2.assembla.com/svn/arcdeveloper/TestingUtilities/trunk/ 在我的情况下,模拟被非常广泛地使用。嘲笑通常用于具有外部依赖性的类,例如网络,数据库,文件系统。如果不使用模拟,这些方法中的任何一种都会在测试中引入片状感。 如果您发现由于要填充大量假数据而导致编写的模拟操作成本高昂,则可以将一些预填充的数据对象设置为常量,并在测试中使用它们或稍作修改的副本。如果此类数据对象具有外部依赖性,则可以通过分离两个方面的方式对其进行重构。 尝试测试Sharepoint似乎是唯一的方法,只有typemock可以让您模拟密封的类。 模拟在某种项目中很有用。但是,有时进行模拟非常耗时,并且投资回报率很低。 |
最新内容
相关内容
linux模拟请求命令?
linux模拟请求命令?,地址,工作,系统,工具,信息,标准,命令,目录,发行,数据,linux怎么加端口url请求在/etc/services中添加端口以及对应进程名及linux无效对象的命令?
linux无效对象的命令?,软件,系统,单位,网络,管理,术语,检测,电脑,环境,风险,linux疑问:普通用户的ifconfig命令无法执行,如何解决?建议这个操linux模拟命令ls?
linux模拟命令ls?,系统,地址,工作,命令,时间,基础,标准,信息,文件,目录,LS(LINUX中ls命令)详细资料大全ls命令是linux下最常用的命令之一,ls跟dlinux基本命令框架?
linux基本命令框架?,系统,基础,网络,设备,管理,基础知识,环境,管理系统,概念,技术,新手如何自学linux安装linux系统,把自己喜欢的linux发行版安linux在线模拟器命令?
linux在线模拟器命令?,系统,设备,管理,命令,软件,数据,在线,网络,环境,盘中,linux必学的60个命令_linux必学的60个命令怎么读起来简单安装和登linux命令模拟软件?
linux命令模拟软件?,软件,系统,地址,平台,电脑,环境,网上,工具,名字,名称,windows环境下的linux模拟软件1、首先需要打开电脑里的VirualBox软靠谱的Python爬虫框架都有哪几个?
靠谱的Python爬虫框架都有哪几个?,官网,培训,爬虫,专文,框架,统计数据,辅助工具,网页,程序,以下内容,一些同学普遍认为仅剩Python才能够顺利实pythonPandas Series对象有哪些属
pythonPandas Series对象有哪些属性?,工具,数据,数字,分析,培训,属性,数据类型,数组,对象,索引,想必大家都知道pandas,它是基于Numpy的一种工具python是面向对象还是面向过程的
python是面向对象还是面向过程的,数据,代码,基础,形态,培训,术语,设计,对象,过程,语言,Python虽然是解释型语言,但从设计之初就已经是一门面向实现Python对象的持久化存储
实现Python对象的持久化存储,数据,对象,系统,函数,培训,标准,环境,管理,参数,文件,Python中有个序列化过程叫作pickle,它能够实现任意对象与文python之访问对象的元数据
python之访问对象的元数据,数据,异常,培训,属性,模块,对象,类型,定义,文档,实例,当你对一个你构造的对象使用dir()时,可能会发现列表中的很多python之执行对象
python之执行对象,代码,数据,信息,概念,培训,通用,对象,属性,方法,赋值,有时候我们会碰到这样的需求,需要执行对象的某个方法,或是需要对对象的