美文网首页细说测试软件测试脚本软件测试
优雅的模拟测试框架mock,用于Java的单元测试

优雅的模拟测试框架mock,用于Java的单元测试

作者: 西边人 | 来源:发表于2018-02-05 11:05 被阅读39次

什么是mock ?

mock在翻译过来是模拟的意思。这里要介绍的mock是辅助单元测试的一个模块。它允许你用模拟对象来替换你的系统的部分,并对它们已使用的方式进行断言。

什么意思呢?说的直白些,我们要测试一个模块(类、方法或接口),但是这个模块还没有实现,或者它属于第三方模块,真的去调用会比较麻烦,这个时候就可以借助 mock 技术,给该模块设置预期结果。

可能你和我一样会有疑问,把要测试的模块都mock掉了,这不是自己骗自己嘛,那我们还测什么?

但是,在实际生产中的项目是非常复杂的,对其进行单元测试的时候,会遇到以下问题:

接口的依赖

外部接口调用

测试环境非常复杂

单元测试应该只针对当前单元进行测试, 所有的内部或外部的依赖应该是稳定的, 已经在别处进行测试过的.使用mock 就可以对外部依赖组件实现进行模拟并且替换掉,从而使得单元测试将焦点只放在当前的单元功能。

mock技术的目的和作用就是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开。

什么是 Mockito ?

官方网站:http://site.mockito.org/

Tasty mocking framework for unit tests in Java

优雅的mock框架用于Java的单元测试。

GitHub 地址:https://github.com/mockito/mockito

安装 Mockito

以 Maven 方式安装为例。

org.mockito mockito-all 2.0.2-beta test

因为 Mockito是其于单元测试的框架,所以,接下来的练习最好在单元框架框架下运行,通过 Maven 配置 JUnit 单元测试框架。

junit junit 4.12 test

mock 一个List,因为大家都知道它的接口(例如add(),get(), clear())。不要mock一个真实的List类型,使用一个真实的实例来替代。

验证某些行为

例子:

import org.junit.Test;import java.util.List; // 静态导入会使代码更简洁import static org.mockito.Mockito.*;public class MockitoDemo { @Test public void verify_behaviour() { // mock creation 创建mock对象 List mockedList = mock(List.class); //using mock object 使用mock对象 mockedList.add("one"); mockedList.clear(); //verification 验证 verify(mockedList).add("one"); verify(mockedList).clear(); }}

一旦mock对象被创建了,mock对象会记住所有的交互。然后你就可能选择性的验证你感兴趣的交互。


作者:西边人

程序爬虫获取国内外测试资源分享给自学爱好者

公众号、今日头条(软件测试资源站)作者

关注后回复测试资料,打包资料下载。

自学联盟爱好者QQ群:330374464

相关文章

  • Mockito使用介绍

    Mockito是用于写Java的单元测试框架,在单元测试中使用Mockito来创建和模拟(Mock)假的Java对...

  • 优雅的模拟测试框架mock,用于Java的单元测试

    什么是mock ? mock在翻译过来是模拟的意思。这里要介绍的mock是辅助单元测试的一个模块。它允许你用模拟对...

  • nodejs mock数据 单元测试

    nodejs 单元测试 nodejs koa 框架实现Java 中mock+junit类似的单元测试。 需要用到的...

  • PowerMock简介

      Java单元测试框架主要有JUnit和TestNG,常用的Mock框架主要有EasyMock、Mockito和...

  • python mock server实现:flask

    一、什么是mock mock,即模拟。模拟一个对象,模拟接口返回。 二、什么场景要用mock 1、单元测试: 由于...

  • Mockito使用总结

    Mockito介绍 Mockito就是一个优秀的用于单元测试的mock框架。在软件开发中提及”mock”,通常理解...

  • 接口测试Mock与HttpClient

    1.Mock框架 1.1mock介绍: mock可以模拟接口测试,通过运行mock框架的jar,快速搭建接口测试。...

  • 一篇文章让你了解基于Spring的测试

    针对Spring某个类及方法的单元测试,结合单元测试框架(比如JUnit)和Mock的框架(比如EasyMock)...

  • Jmokit

    # Junit+Jmokit单元测试 标签(空格分隔):java单元测试 --- > 原理:mock测试就是在测试...

  • RSpec, Test Double, Mock, and S

    Rspec是ruby的测试框架之一。 Mock和stub都属于Test double,用于测试时,模拟特定的方法或...

网友评论

    本文标题:优雅的模拟测试框架mock,用于Java的单元测试

    本文链接:https://www.haomeiwen.com/subject/woybzxtx.html