go 单元测试框架介绍
最近项目在补充单元测试,这里介绍以下几个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 单元测试框架介绍的更多相关文章
- 单元测试框架之unittest(七)
一.摘要 前篇文章已经详细介绍了unittest框架的特性,足以满足我们日常的测试工作,但那并不是unittest的全部,本片博文将介绍一些应该知道但未必能经常用到的内容 然而,想全部掌握unitte ...
- JavaScript单元测试框架JsUnit基本介绍和使用
JavaScript单元测试框架JsUnit基本介绍和使用 XUnit framework XUnit是一套标准化的独立于语言的概念和结构集合,用于编写和运行单元测试(Unit tests). 每一个 ...
- Python+selenium之简单介绍unittest单元测试框架
Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...
- Python+Selenium框架设计篇之-简单介绍unittest单元测试框架
前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest. unit ...
- 27. Unittest单元测试框架的介绍与使用
unittest单元测试框架 先贴一下unittest官网地址.unittest文档开头介绍了四个重要的概念:test fixture,test case, test suite, test runn ...
- 推荐:一个写的相当好的介绍C++单元测试框架Google Test (gtest) 教程
原文来自:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 虽然有点晚了,还是一口气读完了全部文章.作者言简意赅和明快的风格 ...
- [翻译]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 ...
- JavaScript单元测试框架-Jasmine
Jasmine的开发团队来自PivotalLabs,他们一开始开发的JavaScript测试框架是JsUnit,来源于著名的JAVA测试框架JUnit.JsUnit是xUnit的JavaScript实 ...
- Python单元测试框架之pytest -- 断言
对于测试来讲,不管是功能测试,自动化测试,还是单元测试.一般都会预设一个正确的预期结果,而在测试执行的过程中会得到一个实际的结果.测试的成功与否就是拿实际的结果与预期的结果进行比较.这个比的过程实际就 ...
随机推荐
- eclipse解决中文字体太小问题(转载)
最近新装了Win7,打开eclipse3.7中文字体很小,简直难以辨认.在网上搜索发现这是由于Eclipse 3.7 用的字体是 Consolas,显示中文的时候默认太小了. 解决方式有两种:一. ...
- 201671030102陈飞 实验十四 团队项目评审&课程学习总结
项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 课程学习目标 1.掌握软件项目评审会议流程 ...
- Spring Boot 缓存 知识点
每次调用需要缓存功能的方法时,Spring会检查指定参数的指定的目标方法是否已经被调用过:如果有就直接从缓存中获取方法调用后的结果,如果没有就调用方法并缓存结果后返回给用户.下次调用直接从缓存中获取. ...
- Gym-101242B:Branch Assignment(最短路,四边形不等式优化DP)
题意:要完成一个由s个子项目组成的项目,给b(b>=s)个部门分配,从而把b个部门分成s个组.分组完成后,每一组的任 意两个点之间都要传递信息.假设在(i,j)两个点间传送信息,要先把信息加密, ...
- 编程语言和python介绍, 变量,小整数池,垃圾回收机制
1.编程语言的发展史 计算机是基于电工作(基于高.低电平)1010010101011 1.机器语言 优点:执行速度够快 缺点:开发效率非常低 2.汇编语言(通过英文字符组成) 优点:执行效率相较于机器 ...
- Monkey面试整理
1. 查找进程命令是什么? adb shell ps adb shell ps |findstr 名称 2. 如何获取包名 1)获取手机上的所有包名信息. adb shell pm list pack ...
- vue.js不仅是一种模式,也是一种工程组织方式
vue.js不仅是一种模式,也是一种工程组织方式
- PHP 判断时间段 至今过了多长时间
/** * * @param timestamp $time 输入时间 * @return str $str 输入时间与现在时间差的中文 */ function wordTime($time) { / ...
- 项目构建工具ant的使用
ant是项目构建工具,以xml文件作为构建文件,在这个xml文件(默认是build.xml,当然也可以取其它名字)里我们可以定义多个目标,用我们期待的方式去构建项目,比如说编译,测试,发邮件等等. a ...
- ent 基本使用四 图遍历查询
接上文,我们已经创建了基本的关系以及表实体,以下是通过图方式的查询 参考关系图 代码处理 创建图数据 func CreateGraph(ctx context.Context, client *ent ...