最近项目在补充单元测试,这里介绍以下几个go里流行的单元测试框架。

gomock

gostub

monkey

Convey

下面介绍下各个框架的主要用途

convey 主要用途是用来组织测试用例的

gomock 主要用来给接口打桩的。mockgen可以生成对应的接口测试文件。

gostub 主要用来给变量、函数、过程打桩 但是给函数打桩时,需要做侵入式修改

monkey 主要也是用来给变量、函数打桩的

gostub打桩的原理式通过反射,所以要求调用stub函数传入第一个参数必须是指针,然而函数并没有指针的概念,所以需要对函数做侵入式修改。

monkey打桩的原理则是在运行时通过汇编语句重写可执行文件,将待打桩函数或方法的实现跳转到桩实现,原理和热补丁类似。但是moneky不是线程安全的,不能用在并发测试中

对于以上几个框架,简书上有大神已经做了详细介绍了

下面给出链接

convey

https://www.jianshu.com/p/e3b2b1194830

gomock

https://www.jianshu.com/p/f4e773a1b11f

monkey

https://www.jianshu.com/p/2f675d5e334e

gostub

https://www.jianshu.com/p/70a93a9ed186

这里简单提一下convey

一般都是convey+monkey或者convey+gostub结合使用

package tests

import (
"errors"
. "github.com/smartystreets/goconvey/convey"
"testing"
) func Func(arg string) error {
if len(arg) > {
return nil
} else {
return errors.New("arg is nil")
}
} func TestFunc(t *testing.T) {
Convey("test Func", t, func() {
Convey("Func should return nil when arg is not empty", func() {
arg := ""
err := Func(arg)
So(err, ShouldBeNil)
})
Convey("Func should return error when arg is empty", func() {
arg := ""
exceptErr := errors.New("arg is nil")
err := Func(arg)
So(err, ShouldBeError, exceptErr)
})
})
}

主要使用了两个函数Convey和So函数

convey函数可以嵌套使用,第一个参数都是对测试用例的描述,第二个参数有所不同。外层的convery第二个参数必须时testing.T指针。第三个参数是函数,保存其他测试用例。内层的convey的第二个参数是测试执行函数

So函数用来对函数的返回值做判断的。提供了很多类型,ShouldBeNil,ShouldBeERRor,ShouldBeEmpty等等。基本都覆盖到了

go 单元测试框架介绍的更多相关文章

  1. 单元测试框架之unittest(七)

    一.摘要 前篇文章已经详细介绍了unittest框架的特性,足以满足我们日常的测试工作,但那并不是unittest的全部,本片博文将介绍一些应该知道但未必能经常用到的内容 然而,想全部掌握unitte ...

  2. JavaScript单元测试框架JsUnit基本介绍和使用

    JavaScript单元测试框架JsUnit基本介绍和使用 XUnit framework XUnit是一套标准化的独立于语言的概念和结构集合,用于编写和运行单元测试(Unit tests). 每一个 ...

  3. Python+selenium之简单介绍unittest单元测试框架

    Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...

  4. Python+Selenium框架设计篇之-简单介绍unittest单元测试框架

    前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest.       unit ...

  5. 27. Unittest单元测试框架的介绍与使用

    unittest单元测试框架 先贴一下unittest官网地址.unittest文档开头介绍了四个重要的概念:test fixture,test case, test suite, test runn ...

  6. 推荐:一个写的相当好的介绍C++单元测试框架Google Test (gtest) 教程

    原文来自:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 虽然有点晚了,还是一口气读完了全部文章.作者言简意赅和明快的风格 ...

  7. [翻译]Spring框架参考文档(V4.3.3)-第二章Spring框架介绍 2.1 2.2 翻译--2.3待继续

    英文链接:http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/overview.ht ...

  8. JavaScript单元测试框架-Jasmine

    Jasmine的开发团队来自PivotalLabs,他们一开始开发的JavaScript测试框架是JsUnit,来源于著名的JAVA测试框架JUnit.JsUnit是xUnit的JavaScript实 ...

  9. Python单元测试框架之pytest -- 断言

    对于测试来讲,不管是功能测试,自动化测试,还是单元测试.一般都会预设一个正确的预期结果,而在测试执行的过程中会得到一个实际的结果.测试的成功与否就是拿实际的结果与预期的结果进行比较.这个比的过程实际就 ...

随机推荐

  1. xz格式解压

    1.安装xz命令 yum install xz -y 2.将xz文件解压为tar文件 xz -d example.tar.xz 3.将tar文件解压 tar xf example.tar 如果无法安装 ...

  2. Gym - 247731E :room(最小费用流裸题)

    题意:有N个宿舍(N<200),给出第一年每个宿舍有哪4个同学.现在给出N个4元组y[][4],表示这4个人想住一起,问最少多少人需要换宿舍. 思路:费用流,每个4元组y[]到每个宿舍连边,流量 ...

  3. redux沉思录

    要素:store.reducer.dispatch/subscribe connect:将业务逻辑剥离到容器类,数据的双向绑定: 数据.操作.UI分离.命令封装 核心思想:对共享状态的维护: 核心代码 ...

  4. 函数式编程:面向可复用的map和pipeline机制的编程语言

    函数式编程:面向可复用的map和pipeline机制的编程语言

  5. Generative Adversarial Networks overview(4)

    Libo1575899134@outlook.com Libo (原创文章,转发请注明作者) 本文章主要介绍Gan的应用篇,3,主要介绍图像应用,4, 主要介绍文本以及医药化学其他领域应用 原理篇请看 ...

  6. idea 将java导出为可执行jar及导入jar依赖

    使用maven可以很好的帮助我们进行依赖的管理,也可以使用maven的jar包打包插件构建出可运行的jar.那针对不是用maven进行管理的普通java项目,可以通过以下方式导出可执行的jar包以及导 ...

  7. Git git2.8.1客户端安装教程

    Git git2.8.1客户端安装教程 一 Git介绍 git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开 ...

  8. 牛股资讯-PT

    智能盯盘:实时监控股票涨跌极速行情:实时推送全球行情海量资讯:实时发布海量信息 股票平台,炒股软件,东方财富网,同花顺,大智慧,益盟操盘手,a股,沪深股市,创业板,交易策略,选股,大盘,牛股,牛市,财 ...

  9. 洛谷P2293 高精开根

    锣鼓2293 写完了放代码 应该没什么思维难度 ———————————————————————————————————————————————————————— python真香 m=input() ...

  10. COCI 2015、2016 1st round 题解(官方)

    官方题解: 官方代码: Code-KARTE: #include <cstdio> #include <iostream> #include <cstring> u ...