Test 的写法:

每一个test文件必须import 一个"testing"

test文件下的每一个test case均必须以Test开头并且符合TestXxx形式,否则go test会直接跳过测试不执行

eg: main_test.go

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "testing"
  6. )
  7.  
  8. func TestPrint(t *testing.T) {
  9. res := Print1to20()
  10. fmt.Println("hey")
  11. if res != 210 {
  12. t.Errorf("wrong result of Print1to20")
  13. }
  14. }
  15.  
  16. func TestPrint1(t *testing.T) {
  17. fmt.Println("test")
  18. }

 main.go

  1. package main
  2.  
  3. func Print1to20() int {
  4. res := 0
  5. for i := 0; i < 21; i++ {
  6. res += i
  7. }
  8. return res
  9. }
  10.  
  11. func main() {
  12. Print1to20()
  13. }

t.SkipNow()跳过当前case, 按PASS直接处理下一个case 

  1. Errorf打印错误信息时,整个test case会被跳过

 test case的入参为t *testing.T或者b *testing.B

go 的test不会保证多个TestXxx是顺序执行,但是通常情况下会按照顺序执行

使用t.Run来执行subtest可以做到控制test 输出以及test的顺序执行

  1. func TestPrint(t *testing.T){
  2. t.Run("a1",func(t *testing.T){fmt.PrintLn("a1")}),
  3. t.Run("a2",func(t *testing.T){fmt.PrintLn("a2")}),
  4. }

TestMain: 初始化test,并且使用m.Run()来调用其他tests,可以完成一些需要初始化的testing, 如数据库连接,打开文件, REST服务登录等

是test case 入口

  1. func TestMain(m *testing.M){
  2.   //此处初始化操作
  3.   fmt.PrintLn("test start")
  4.  
  5.   m.Run()
  6.  
  7. }

  

  如果没有在TestMain函数中调用m.Run.则不会执行TestMain以外的tests

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "testing"
  6. )
  7.  
  8. func testPrint(t *testing.T) {
  9. res := Print1to20()
  10. fmt.Println("hey")
  11. if res != 210 {
  12. t.Errorf("wrong result of Print1to20")
  13. }
  14. }
  15.  
  16. func testPrint1(t *testing.T) {
  17. res := Print1to20()
  18. res++
  19. if res != 211 {
  20. t.Errorf("wrong result of Print1to20")
  21. }
  22. }
  23.  
  24. func TestAll(t *testing.T) {
  25. t.Run("testPrint", testPrint)
  26. t.Run("testPrint1", testPrint1)
  27. }

  

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "testing"
  6. )
  7.  
  8. func TestPrint(t *testing.T) {
  9. res := Print1to20()
  10. fmt.Println("hey")
  11. if res != 210 {
  12. t.Errorf("wrong result of Print1to20")
  13. }
  14. }
  15.  
  16. func TestPrint1(t *testing.T) {
  17. res := Print1to20()
  18. res++
  19. if res != 211 {
  20. t.Errorf("wrong result of Print1to20")
  21. }
  22. }
  23.  
  24. func TestMain(m *testing.M) {
  25. fmt.Println("starting...")
  26. m.Run()
  27. }

  

go 学习笔记(2)go test的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

  10. ucos实时操作系统学习笔记——任务间通信(消息)

    ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...

随机推荐

  1. PHP 之根据两个经纬度计算距离

    一.函数代码 /** * @param $lng1 * @param $lat1 * @param $lng2 * @param $lat2 * @return float */ function g ...

  2. Shiro安全框架-简介

    1. 简介 Apache Shiro是Java的一个安全框架.功能强大,使用简单的Java安全框架,它为开发人员提供一个直观而全面的认证,授权,加密及会话管理的解决方案. 实际上,Shiro的主要功能 ...

  3. 记录linux上mongo迁移使用的命令

    首先mongodb的文件路径必须在系统盘,这里是 这里安装路径 /usr/mongodb/bin 一般迁移的只是db文件夹和log文件 看配置文件内容 port=27017 #端口 dbpath=/d ...

  4. Hadoop综合大作业1

    本次作业来源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3363 一.课程评分标准: 分数组成: 考勤 10 平时作业 30 爬 ...

  5. VMware网络适配器的选择

    VMware 提供的网络连接有 5 种,分别是"桥接模式"."NAT 模式"."仅主机模式"."自定义"和"L ...

  6. Microsoft SQL Server 2008 R2 安装遇到的问题

    SQL Server 安装过很多次了,第一次遇见这样的问题: TITLE: Microsoft SQL Server 2008 R2 安装程序----------------------------- ...

  7. elementUI 的el-dialog作为子组件,父组件如何控制其关闭的按钮

    这里有三点需要说明: 1. 使用:before-close="closeHandle" 将其 $emit() 出去 2. 取消按钮 也需要$emeit出去 3. 控制对话框显示隐藏 ...

  8. bat脚本的基本命令语法

    bat脚本的基本命令语法 一.批处理的常见命令 1.REM 和 ::     2.ECHO 和 @     3.PAUSE     4.ERRORLEVEL     5.TITLE     6.COL ...

  9. Python 初级 6 循环

    一.一个简单的for循环 1 重复做相同的事 for looper in [1, 2, 3, 4, 5]: print("hello") 1 looper的值从1开始, 所以loo ...

  10. LD SCore计算基因多效性、遗传度、遗传相关性(the LD Score regression intercept, heritability and genetic correlation)

    这篇文章是对之前啊啊救救我,为何我的QQ图那么飘(全基因组关联分析)这篇文章的一个补坑. LD SCore除了查看显著SNP位点对表型是否为基因多效性外,还额外补充了怎么计算表型的遗传度和遗传相关性. ...