Go项目的测试代码1(基础)
最近写了测试代码,整理了一下。
先看看简单的测试代码.
// add_test.go ==> 文件名 _test.go 结尾的默认为测试代码文件
package models import (
"testing"
) //Test开头的默认为测试方法
func TestAdd(t *testing.T) {
//arrange
var x, y, res int
x =
y = //act
result = Add(x, y) //assert
if result != {
t.Fatal("Add的结果不正确")
}
}
// add.go
package models func Add(x, y int) int {
return x + y
}
查看测试结构。
$ go test -v ==> 依次运行当前package的 _test.go文件的测试方法。
=== RUN TestAdd
--- PASS: TestAdd (.00s)
PASS
ok gotest/test5 .006s
目前编写测试代码普遍公认的模板结构。
1)arrange: 测试之前需要准备的代码。
2)act: 实际要测试的方法。
3)assert: 结果确认。
如果测试不通过呢?
//assert
if result != { //==>结果改成 6
t.Fatal("Add的结果不正确")
}
$ go test
--- FAIL: TestAdd (.00s)
add_test.go:: Add的结果不正确
FAIL
exit status
FAIL gotest/test5/models .006s
也可以写一个公用的比较方法, 自定义输出结果。
package test import (
"reflect"
"testing"
) func Equal(t *testing.T, exp, got interface{}) {
if !reflect.DeepEqual(exp, got) {
t.Errorf("\033[31m\n exp: %v \n got: %v \033[39m\n", exp, got)
t.FailNow()
}
}
//assert
if result != { //==>结果改成 6
t.Fatal("Add的结果不正确")
} //=====>> 比较的方法改用自己写的test包的Equal方法。 //assert
test.Equal(t, result, )
输出测试未通过的代码位置,以及比较结果。
$ go test
--- FAIL: TestAdd (.00s)
test.go::
exp: 5
got: 6
FAIL
exit status
FAIL gotest/test5/models .007s
这样可以按照自己的喜好来自定义提示了。
覆盖率
go test -cover
go test -cover go test -cover -coverprofile=coverage.out
go tool cover -html=./coverage.out
可以查看测试代码的覆盖率,这只是一个补助的功能。
不需要过分的要求高覆盖率,因为维护测试代码也是耗精力的。
下篇文章介绍项目中我是怎么写测试代码的…^^
未完继续
Go项目的测试代码1(基础)的更多相关文章
- Go项目的测试代码2(项目运用)
上一篇文章介绍了最基本的测试代码的写法.Go项目的测试代码(基础) 这里简单的共享一下我在项目中使用的方式. 项目结构 我们实际项目中, 结构简单地分了控制层controllers和模块层models ...
- Go项目的测试代码3(测试替身Test Double)
上一篇文章介绍了项目中测试代码的写法. Go项目的测试代码2(项目运用) 这里简单的共享一下测试替身. 当我们写测试代码的时候,经常遇到一个问题.跟别的模块或服务有依赖性,可是功能还没开发完.或是因为 ...
- Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码
Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本文主要是记录一写我在学习MapReduce时的一些 ...
- .NET单元测试的艺术-3.测试代码
开篇:上一篇我们学习单元测试和核心技术:存根.模拟对象和隔离框架,它们是我们进行高质量单元测试的技术基础.本篇会集中在管理和组织单元测试的技术,以及如何确保在真实项目中进行高质量的单元测试. 系列目录 ...
- Web项目后台测试流程
1. 本地下载项目源码 1. Git clone项目代码到本地(本地项目代码1)并fetch: 2. Switch到master分支: 3. Create测试分支(例如:test1)并勾选“Switc ...
- spring boot项目如何测试,如何部署
有很多网友会时不时的问我,spring boot项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下spring boot 如何开发.调试.打包到最后的投产上线. 开发阶段 单元 ...
- 统计 Django 项目的测试覆盖率
作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 我们完成了对 blog 应用和 comment 应用这两个核心 app 的测试.现在 ...
- JUnit5学习之六:参数化测试(Parameterized Tests)基础
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 使用Express连接mysql详细教程(附项目的完整代码我放在结尾了)
使用Express连接mysql详细教程(附项目的完整代码我放在结尾了) 要使用Express连接本地数据库 我们首先需要安装好Express的依赖 我们使用这个框架呢首先要有一点ajax的基础 如果 ...
随机推荐
- Jerry和您聊聊Chrome开发者工具
Chrome开发者工具是Jerry日常工作使用的三大调试器之一.虽然工具名称前面带了个"开发者", 但是它对非开发人员仍然有用.不信? 用Chrome打开我们常用的网站,按F12, ...
- mysql管理工具之pt
之前我一直用Seconds_behind_master来衡量主从的延迟,今天看到文档,才觉得多么不可靠!以下是官方文档的描述: In essence, this field measures the ...
- SSISDB7:当前正在运行的Package及其Executable
PM问:“Vic,现在ETL Job跑到哪一个Package了,正在执行哪个Task?”,第一次遇到这个问题时,一下就懵逼了,只能硬着头皮说:“我看看”. 在做项目开发时,这个问题很常见,但是,被很多 ...
- Oracle使用基础
1.Oracle的基本概念: 数据库:存储数据的数据库,Oracle一般只有一个全局数据库 XE,ORCL. EX:Express Edition 速成版 ORCL:企业版 SID:SID是Syste ...
- Istio技术与实践04:最佳实践之教你写一个完整的Mixer Adapter
Istio内置的部分适配器以及相应功能举例如下: circonus:微服务监控分析平台. cloudwatch:针对AWS云资源监控的工具. fluentd:开源的日志采集工具. prometheus ...
- Java错误和异常解析
Java错误和异常解析 错误和异常 在Java中, 根据错误性质将运行错误分为两类: 错误和异常. 在Java程序的执行过程中, 如果出现了异常事件, 就会生成一个异常对象. 生成的异常对象将传递Ja ...
- Java&Selenium处理页面Table以及Table中随机位置的数据
一.摘要 前一段时间公司小伙伴刚刚接触自动化,遇到的一个问题,页面新创建的数据保存后,出现在table中的某个位置,并不一定是第一行还是第几行,这种情况下如何去操控它 本篇博文将介绍处理这个问题的一种 ...
- python -m pip install [package] --no-deps
python -m pip install [package] --no-deps 有些 packages 会依赖一些其它的 package,当我们离线安装 whl 的时候,就无法联网下载依赖包,所 ...
- mysql自增主键清零方法
MySQL数据库自增主键归零的几种方法 如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数: truncate table table_name; 1 当用户没有trunc ...
- idea 高效找出全部未被使用的代码
不得不说 idea 真的很强大,认真花一些时间,好好研究研究 idea 可以让你编写代码更加的高效,并且 idea 时不时会给你一些惊喜的,比如今天要分享的这个,就非常的惊喜: 背景 前几天,忽然又一 ...