Golang程序测试

软件开发离不开软件测试,测试是程序质量的有力保障,也是程序开发者的有力辅助工具。当我们添加或者更新了新的功能是,通过测试单元我们能清楚的了解到程序功能是否正常、性能是否提高等。

Go语言作为一门先进的现代计算机编程语言,为程序测试提供了很多开箱即用的工具。Go语言在标准准库中提供了一个专门用于测试的代码包testing。这个代码包提供了编写代码测试源码文件的一切。使用go test命令便可执行测试源码文件的测试程序。

一功能测试

测试员吗文件总应该与被它测试的源码文件厨艺同一个代码包内。我们在编写测试源码文件总是会用到标准库代码包testing的API。testing包维Go语言的代码包提供自动化测试支持。它与go test命令协同使用自动执行目标代码包中的任何测试函数。

1.1编写测试函数

在测试源码文件中,针对测试目标源码文件的功能测试总是以函数为单位。被用于测试的函数的名称和签名形如:
func TestXxx(t *testing.T)
通常把Xxx替换成被测试的函数名称。我们可以利用*testing.T类型的参数t上的一些方法对功能测试的过程进行记录和控制。

  • 常规记录
    参数 t 上的Log和Logf方法一般用于记录一些常规信息,以展示测试程序的运行过程以及被测试程序的实时状态。t.Log和t.Logf分别与fmt.Println和fmt.Printf函数的使用方法类似。
  • 错误记录
    参数t上的Error和ErrorF方法被用于错误记录。当被测试程序的状态不正确时,调用t.Error或者t.Errorf方法,及时记录当前的错误状态。调用t.Error相当于先后调用了t.Log和t.Fial方法,而调用t.Errorf则相当于先后调用了t.LogF和t.Fial方法。
  • 致命错误记录
    参数t上的Fatal和Fatalf方法被用于记录被测试程序的致命错误状态( 使得测序程序无法继续运行的错误 )。调用t.Fatal相当于先后调用了t.Log和t.FialNow方法,而调用t.Errorf则相当于先后调用了t.FatalF和t.FialNow方法。
  • 失败标记
    参数上的Fail方法被用于标记当前测试函数中的测试是失败的。对t.Fail方法的调用不会终止当前测试函数的执行。当时,此函数的测试结果已经被标记为失败了。
  • 立即失败标记
    方法t.FailNow用于标记当前测试函数的测试是失败的,并立即终止当前测试函数的执行。
  • 失败判断
    t.Failed方法用于获得当前测试函数中的测试是否已经被标记为失败。
  • 忽略测试
    调用t.SkipNow的方法用于标记当前测试函数为已经被忽略的并且立即终止该函数的执行。
1.2功能测试的额运行

Go语言提供了专门用于程序测试命令--go test命令。

执行go test的三种方式:

  • go test testPackage 命令后面跟被测试代码包。
  • go test xxx_test.go xx.go 命令后面跟测试源码文件及其测试的源码文件,用于执行代码包中的部分测试。
  • go test -run=Regxp testPackage使用标记-run ,-run标记的值为一个正则表达式,与正则表达式匹配的功能测函数,才会在此次的测试过程中被执行。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,010评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,780评论 18 399
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,814评论 0 9
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,647评论 25 708
  • L小姐最近又找了一份兼职,是在一所老年大学兼职教一群老头老太太乐理,大概和她一直以来的富婆梦有关吧,L小姐一直想做...
    相濡以火锅阅读 393评论 1 2