为什么需要Mock
测试驱动的开发(Test Driven Design, TDD)要求我们先写单元测试,再写实现代码。在写单元测试的过程中,我们往往会遇到要测试的类有很多依赖,这些依赖的类/对象/资源又有别的依赖,从而形成一个大的依赖树,要在单元测试的环境中完整地构建这样的依赖,是一件很困难的事情。如下:
为了测试类A,我们需要Mock B类和C类
如何Mock
对那些不容易构建的对象用一个虚拟对象来代替,使其在调试期间用来作为真实对象的替代品。
Mockito 介绍
Mockito is a mocking framework that tastes really good. It lets you write beautiful tests with clean & simple API. Mockito doesn’t give you hangover because the tests are very readable and they produce clean verification errors.
Mockito 优势
- Massive StackOverflow community voted Mockito the best mocking framework for java.
- Top 10 Java library across all libraries, not only the testing tools.
- Dan North, the originator of Behavior-Driven Development wrote this back in 2008:
“We decided during the main conference that we should use JUnit 4 and Mockito because we think they are the future of TDD and mocking in Java”
使用场景
- 提前创建测试; TDD(测试驱动开发)
- 团队可以并行工作
- 你可以创建一个验证或者演示程序
- 为无法访问的资源编写测试
- Mock 可以交给用户
- 隔离系统
Mockito入门(具体摘录官网,列出比较常用的功能)
1.引用包
repositories { jcenter() }
dependencies { testCompile "org.mockito:mockito-core:1.+" }
2. verify interactions(检验交互)
import static org.mockito.Mockito.*;
// mock creation
List mockedList = mock(List.class);
// using mock object - it does not throw any "