51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1948|回复: 0
打印 上一主题 下一主题

[资料] 走进 JAVA JMockit

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-1-3 13:42:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
行为和状态的测试:
基于行为的mock是站在目标测试代码外面的角度的.通常主要模拟行为。
而基于状态的是站在目标测试代码内部的。我们可以对传入的参数进行检查、匹配,才返回某些结果。Mockup用于state based测试。
一定要理解,单元测试测什么:
单元测试的原则是哪怕你测试的方法中有一行代码,也是有必要写测试方法的。所以不要担心,你测试的业务逻辑最后只剩下边界值测试。你可以根据一些MOCK的返回值比如空,非空,个数等来测试你的业务逻辑是否正确。如果业务方法依赖于第三方类库,缓存,消息队列,DAO层的方法都是可以MOCK的。
以前的思路:Service方法依赖于SDK,针对这些方法的单元测试需要与微博交互返回正确的AccessToken,这样才能Service做有意义的单元测试。这是典型的依赖于第三方或远程调用的场景。
正确的思路:新浪的API已经由新浪团队测试过。我假设它完全正确,只需要模拟它的返回值来测试我的“业务逻辑”在mock指定值下的反应。就象有些Service方法依赖于DAO层,如果DAO层的单元测试充分(比如通过DBUNIT等工具模拟数据),那么在业务层的单元测试中,只需要mock DAO层即可。
Mock的原因:
1)一些依赖单元本身已经(或者将来会有,只是目前还没有 实现而已)拥有自己的单元测试。
2)由于一些特殊原因,在测试环境中,一些并不是很容易快速的执行的单元(因为它们可能会写数据库或者发送邮件等等)。
Dependency是什么?
通过使用mocked声明,可以在指定的测试代码对一些特殊的依赖(比如新浪微博的API)进行 mock模拟,也就是说,一个mocked类型,应该是单元测试中的一个依赖类型,这些类型可以是引用、接口、抽象类、具体的类、final 类等等。
@mocked是去修饰Dependency的。
更多内容,请学习博为峰网校《走进JAVA JMockit
课程介绍:介绍JAVA中的mock技术,结合mock框架之一的JAVA JMockit中常用的API,深入理解Mock的含义,为什么需要Mock对象,如何创建Mock对象,如何灵活使用JMockit中强大的注释功能及相关API实现注入依赖,测试隔离;如何理解两套核心API(基于行为的验证,基于状态的验证)。
课程目标:能够使用JMockit框架实现具体项目中的测试开发需求,深入理解mock技术的必要性和实用性,能够灵活运用JMockit中两套API(基于行为,基于状态)编写基于mock对象注入的测试用例,实现测试需求;为后续深入学习mock技术打下扎实的基础。
适合人群:有Java面向对象编程基础,了解TestNG,知道maven框架,对MO技术(模拟对象)在测试开发中的运用感兴趣的,并渴望不断提高自己的编码能力,技术能力,更倾向于测试开发,白盒测试发展的各界IT人士。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-4-26 00:50 , Processed in 0.063799 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表