51Testing软件测试论坛

标题: 走进 JAVA JMockit [打印本页]

作者: 学掌门网校    时间: 2018-1-3 13:42
标题: 走进 JAVA JMockit
行为和状态的测试:
基于行为的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
学习地址:http://www.atstudy.com/course/492
[attach]109994[/attach]
课程介绍:介绍JAVA中的mock技术,结合mock框架之一的JAVA JMockit中常用的API,深入理解Mock的含义,为什么需要Mock对象,如何创建Mock对象,如何灵活使用JMockit中强大的注释功能及相关API实现注入依赖,测试隔离;如何理解两套核心API(基于行为的验证,基于状态的验证)。
课程目标:能够使用JMockit框架实现具体项目中的测试开发需求,深入理解mock技术的必要性和实用性,能够灵活运用JMockit中两套API(基于行为,基于状态)编写基于mock对象注入的测试用例,实现测试需求;为后续深入学习mock技术打下扎实的基础。
适合人群:有Java面向对象编程基础,了解TestNG,知道maven框架,对MO技术(模拟对象)在测试开发中的运用感兴趣的,并渴望不断提高自己的编码能力,技术能力,更倾向于测试开发,白盒测试发展的各界IT人士。






欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2