最近写了测试代码,整理了一下。

先看看简单的测试代码.

// 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项目的测试代码(项目运用)

未完继续

----------------------------------------------
欢迎大家的意见和交流
email: li_mingxie@163.com
博客:https://limingxie.github.io/

Go项目的测试代码1(基础)的更多相关文章

  1. Go项目的测试代码2(项目运用)

    上一篇文章介绍了最基本的测试代码的写法.Go项目的测试代码(基础) 这里简单的共享一下我在项目中使用的方式. 项目结构 我们实际项目中, 结构简单地分了控制层controllers和模块层models ...

  2. Go项目的测试代码3(测试替身Test Double)

    上一篇文章介绍了项目中测试代码的写法. Go项目的测试代码2(项目运用) 这里简单的共享一下测试替身. 当我们写测试代码的时候,经常遇到一个问题.跟别的模块或服务有依赖性,可是功能还没开发完.或是因为 ...

  3. Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码

    Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本文主要是记录一写我在学习MapReduce时的一些 ...

  4. .NET单元测试的艺术-3.测试代码

    开篇:上一篇我们学习单元测试和核心技术:存根.模拟对象和隔离框架,它们是我们进行高质量单元测试的技术基础.本篇会集中在管理和组织单元测试的技术,以及如何确保在真实项目中进行高质量的单元测试. 系列目录 ...

  5. Web项目后台测试流程

    1. 本地下载项目源码 1. Git clone项目代码到本地(本地项目代码1)并fetch: 2. Switch到master分支: 3. Create测试分支(例如:test1)并勾选“Switc ...

  6. spring boot项目如何测试,如何部署

    有很多网友会时不时的问我,spring boot项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下spring boot 如何开发.调试.打包到最后的投产上线. 开发阶段 单元 ...

  7. 统计 Django 项目的测试覆盖率

    作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 我们完成了对 blog 应用和 comment 应用这两个核心 app 的测试.现在 ...

  8. JUnit5学习之六:参数化测试(Parameterized Tests)基础

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  9. 使用Express连接mysql详细教程(附项目的完整代码我放在结尾了)

    使用Express连接mysql详细教程(附项目的完整代码我放在结尾了) 要使用Express连接本地数据库 我们首先需要安装好Express的依赖 我们使用这个框架呢首先要有一点ajax的基础 如果 ...

随机推荐

  1. js 数值精确运算使用math.js

    javaScript 浮点数运算的精度问题 问题:编程中你可能会遇到0.1*7=0.7000000000000001; 原因:几乎所有的编程语言都采用了 IEEE-745 浮点数表示法,任何使用二进制 ...

  2. python基础:数据类型二

    一.元组类型 二.字典类型 三.集合 一.元组类型 # 什么是元组: 元组就是一个不可变的列表 # ======================================基本使用======== ...

  3. linux下top命令的使用

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 视图参数含义 top视图分为两部分:操作系统资源概况信息和进程信息.首先分析资源 ...

  4. go mod 解决 Go 语言的包依赖问题

    转:https://testerhome.com/topics/16980 https://testerhome.com/ -------------------------------------- ...

  5. JavaScript教程——函数(arguments 对象)

    arguments 对象 定义 由于 JavaScript 允许函数有不定数目的参数,所以需要一种机制,可以在函数体内部读取所有参数.这就是arguments对象的由来. arguments对象包含了 ...

  6. ssh推送安装mysql脚本

    [root@tianyun project]# vim mysql_install_1.sh #! /usr/bin/env bash # mysql install 1 # by tianyun w ...

  7. Springboot打包成jar包形式发布

    1.修改配置文件pom.xml 添加打包形式设置为jar形式 <packaging>jar</packaging> 2.在build标签内添加内容如下 finalname为打包 ...

  8. Java8-Stream-No.11

    import java.util.Arrays; import java.util.List; public class Streams11 { static class Person { Strin ...

  9. 在当前目录下配置ansible

    配置ansible.cfg [defaults] inventory = myhost # 指定主机清单文件 host_key_checking = False 配置主机清单文件 [node] nod ...

  10. 【leetcode】1296. Divide Array in Sets of K Consecutive Numbers

    题目如下: Given an array of integers nums and a positive integer k, find whether it's possible to divide ...