在之前的文章中我们分享过一些非常知名的测试框架, Mockito就是其中之一, 在分享Mockit之前, 先聊聊它处在哪个部分?
在单元测试自动化体系里有4个关键部分组成:
构建管理: Maven/Gradle 项目管理和构建工作
代码管理Git/Perforce
集成和分析管理:持续集成Jenkins, 代码分析Sonar
测试框架: Junit/Mockito/TestNG
Mockito是一种针对java的Mocking框架, 它与EasyMock 和JMock很相似, 通过在执行后校验什么已经被调用,消除了对期望行为(expections)的需要, 其他的mocking库需要你在执行前记录期望行为, 而导致了丑陋的初始化代码. Mockito让代码更贴近自然语言,便于阅读.
大多 Java Mock 库如 EasyMock 或 JMock 都是 expect-run-verify (期望-运行-验证)方式,而 Mockito 则使用更简单,更直观的方法, 在执行后的互动中提问。使用 Mockito,你可以验证任何你想要的 . Mockito无需准备昂贵的前期启动。他们的目标是透明的,让开发人员专注于测试选定的行为。
Mockito拥有的非常少的API,所有开始使用 Mockito,几乎没有时间成本。因为只有一种创造 mock 的方式。只要记住,在执行前 stub,而后在交互中验证。你很快就会发现这样 TDD java 代码是多么自然。
Mockito 语法流程
Mockito Mock mock(Class classToMock); mock(Class classToMock, String name) Stub when(mock.someMethod()).thenReturn(value) when(mock.someMethod()).thenThrow(new RuntimeException) when(mock.someMethod()).thenAnswer() exec
首先要利用mock来构造依赖,其次利用when语句来构造stub,然后就可以执行测试方法了
如何使用Mockito
在Intellij IDEA中创建Maven项目
在pom.xml添加依赖包
<dependency> <groupId>org.mockitogroupId> <artifactId>mockito-coreartifactId> <version>2.15.0version> <scope>testscope> dependency> <dependency> <groupId>junitgroupId> <artifactId>junitartifactId> <version>4.12version> dependency>
来看下maven导入的mockito包是什么样的