`
dunsword
  • 浏览: 3984 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

单元测试中使用Unitls

阅读更多
以前做单元测试,使用DBUnit,但DBUnit没有针对单元测试做太多的东西,虽然灵活,但使用起来不方便,而且也没有想Rails里面那样为怎样在单元测试中准备测试数据提供一个比较好的规范和约束。使用中还得自己参照Rails写了很多代码进行封装。最近发现一个开源的框架Unitils,一个对JUnit的扩展框架,其中就包含了对DBUnit的封装。
试用了一下Unitls,里面功能不少。时间关系,还只是主要用了一下我们用得到的一些特性。
以前我们写单元测试代码,除了JUnit,另外还有用EasyMock、DBUnit、另外还有Spring、Hibernate等等,用起来很不方便。有了Unitls后,感觉写测试代码方便很多(有点写Rails测试代码的感觉了,虽然还是有差距,呵呵)。
Unitls除了对JUnit的Assert加强外,主要包含以下Modules:
• DatabaseModule: unit-test database maintenance and connection pooling
• DbUnitModule: test data management using DbUnit
• HibernateModule: Hibernate configuration support and automatic database mapping checking
• EasyMockModule: support for creating mocks and lenient reflection argument matching
• InjectModule: support for injecting (mock) objects into other objects
• SpringModule: support for loading application contexts and retrieving and injecting Spring beans

个人感觉比较有用的Module是:DbUnitModule、EsayMockModule、InjectModule、SpringModule。

DbUnitModule对DBUnit进行了封装,由于Unitils大量使用了Annotation,和JUnit4的风格差不多,使用起来很方便。但它的用法是为每个测试类或者测试方法准备一个DataSet文件,好像还不支持在一个测试方法前执行多个DataSet,开始不太习惯,但用惯了感觉也还不错。

SpringModule可以方便的在测试代码中获取定义在Spring中的Bean,一起也是自己写了一个JUnit的TestCase的基类来初始化,现在可以直接用这个了。

EasyMockModule和InjectModule,写测试代码,一直一来比较烦人的就是写MockObject,本来我就在用EasyMock,有了这两个东东,以后写测试代码会稍微轻松写,至少可以少写几行了,。

DatabaseModule感觉基本参照Rails框架做的,可以很方便的维护数据库结构的变动,也许下次新项目可以用这个来维护数据库脚本,但原有的项目由于自己已经有一套数据库脚本管理的流程,感觉就没必要改了。

HibernateModule如果单独用hibernate的话应该很好用,在通过Spring来用Hibernate的情况下,应该不需要单独用。但还没有看太仔细,里面有些功能也许用的到。

另外,Untils是一个可扩展性非常好的框架,其Module是可以自己扩展的,以后想自己开发一些工具类扩展测试功能的话,都可以基于这个框架做。
分享到:
评论

相关推荐

    Javascript单元测试框架QUnitjs详细介绍

    使用单元测试,开发者可以减少手动测试的时间,因为测试脚本可以重复使用。另外,它还有助于避免回归问题,即新添加或修改的代码可能会导致旧代码出现问题。当发生这种情况时,单元测试可以立即发现并报告错误。此外...

    hello-micro:基于go-microv2封装的微服务框架

    生产/测试环境选择基于环境变量“ env” 内覆盖了常用的方法(unitls目录下) 封装了图片验证码 封装了rabbitMq(包含了连续的方法封装) 封装了redis 基于makefile的protobuf 服务发现使用的是etcd 更多内容自行...

    python入门-30.寻找列表中只出现一次的数字-寻找单身狗.py

    python入门-30.寻找列表中只出现一次的数字——寻找单身狗.py

    布尔教育linux优化笔记

    linux优化笔记,配套视频:https://www.bilibili.com/list/474327672?sid=4496133&spm_id_from=333.999.0.0&desc=1

    知识付费系统-直播+讲师入驻+课程售卖+商城系统-v2.1.9版本搭建以及资源分享下载

    知识付费系统-直播+讲师入驻+课程售卖+商城系统-v2.1.9版本搭建以及资源分享下载,CRMEB知识付费分销与直播营销系统是由西安众邦科技自主开发的一款在线教育平台,该系统不仅拥有独立的知识产权,还采用了先进的ThinkPhp5.0框架和Vue前端技术栈,集成了在线直播教学及课程分销等多种功能,旨在为用户提供全方位的学习体验,默认解压密码youyacaocom

    美妆神域-JAVA-基于springBoot美妆神域设计与实现

    美妆神域-JAVA-基于springBoot美妆神域设计与实现

    原生js制作Google粘土logo动画涂鸦代码.zip

    原生js制作Google粘土logo动画涂鸦代码.zip

    golin 扫描工具使用, 检查系统漏洞、web程序漏洞

    golin 扫描工具使用, 检查系统漏洞、web程序漏洞

    原生态纯js图片网格鼠标悬停放大显示特效代码下载.zip

    原生态纯js图片网格鼠标悬停放大显示特效代码下载.zip

    用AWLUM进行灰色编码2^2n-QAM调制的精确率Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    去水印web端独立版web

    去水印web端独立版web

    原生js制作左侧浮动可折叠在线客服代码.zip

    原生js制作左侧浮动可折叠在线客服代码.zip

    Chrome 谷歌浏览器下载

    Chrome 谷歌浏览器下载

    亲测全新完整版H5商城系统源码 附教程

    全新完整版H5商城系统源码 自己花钱买的,亲测可用,需要自行下载 H5商城系统设置是实现商城基本功能的核心部分,涵盖了从网站配置、短信和支付配置,到商品、工单、订单、分站和提现管理等多个模块的设置。以下是详细的设置指南,帮助您快速上手并高效管理商城系统。 测试环境:Nginx+PHP7.0+MySQL5.6 1. 网站配置 设置商城名称、LOGO、标题、联系方式和SEO关键词等,确保商城专业和易于搜索。 2. 短信配置 配置短信接口和模板,用于发送订单通知、验证码等,提升用户体验。 3. 支付接口配置 配置微信、支付宝等支付接口,填写API密钥和回调地址,确保支付流畅。 4. 商品分类管理 对商品进行分类和排序,设置分类名称和图标,便于用户查找商品。 5. 商品管理 添加和管理商品信息、规格、图片等,确保商品信息准确丰富。 6. 工单管理 查看和回复用户工单,记录售后问题,提升用户服务质量。 7. 订单管理 查看订单详情,更新订单状态,支持批量导出,方便订单跟踪。 8. 分站管理 创建不同区域分站,设置权限,统一管理各区域市场。 9. 提现管理

    短信3.141592672893982398674234

    apk安装包

    原生js选项卡插件自定义图片滑动选项卡切换.zip

    原生js选项卡插件自定义图片滑动选项卡切换.zip

    1-宗教信息佛教佛寺寺庙庵堂相关数据-社科数据.zip

    宗教信息佛教佛寺寺庙庵堂相关数据集提供了全国各个地区省市县各个佛教寺庙的详细信息。这些数据不仅包括寺庙的名称和负责人姓名,还涵盖了所属省份、地级市、区县、具体地址、建立日期以及支派类别等关键信息。该数据集整理了超过3万条样本,为研究中国佛教寺庙的分布、历史和文化提供了丰富的第一手资料。这些信息有助于了解佛教在中国的传播和发展,以及寺庙在社会和文化中的作用。数据的整理和提供,对于宗教学、社会学、历史学和文化研究等领域的学者来说,是一个宝贵的资源。

    线性电阻网络的等效电阻计算Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    简单的 Python 版本管理.zip

    简单的 Python 版本管理pyenvpyenv 可让您轻松在多个 Python 版本之间切换。它简单、不引人注目,并遵循 UNIX 传统,即使用单一用途的工具来做好一件事。该项目由rbenv和 ruby​​-build分叉而来,并针对 Python 进行了修改。pyenv 的作用是什么......允许您根据每个用户更改全局 Python 版本。为每个项目的 Python 版本提供支持。允许您使用环境变量覆盖 Python 版本。一次搜索多个 Python 版本的命令。这可能有助于使用tox跨 Python 版本进行测试。与 pythonbrew 和 pythonz 相比,pyenv没有……依赖于Python本身。pyenv由纯shell脚本制作。不存在Python的引导问题。需要加载到你的 shell 中。相反,pyenv 的 shim 方法通过向你的 中添加目录来工作PATH。管理虚拟环境。当然,你可以自己创建虚拟环境 ,或者使用pyenv-virtualenv 来自动化该过程。目录安装获取 PyenvLinux/UNIX自动安装程序基本

    Notepad-v2.20工具,是替代Notepad++的首选工具

    Notepad-v2.20工具,是替代Notepad++的首选工具

Global site tag (gtag.js) - Google Analytics