go 学习笔记(2)go test
Test 的写法:
每一个test文件必须import 一个"testing"
test文件下的每一个test case均必须以Test开头并且符合TestXxx形式,否则go test会直接跳过测试不执行
eg: main_test.go
package main import (
"fmt"
"testing"
) func TestPrint(t *testing.T) {
res := Print1to20()
fmt.Println("hey")
if res != 210 {
t.Errorf("wrong result of Print1to20")
}
} func TestPrint1(t *testing.T) {
fmt.Println("test")
}
main.go
package main func Print1to20() int {
res := 0
for i := 0; i < 21; i++ {
res += i
}
return res
} func main() {
Print1to20()
}
t.SkipNow()跳过当前case, 按PASS直接处理下一个case
Errorf打印错误信息时,整个test case会被跳过
test case的入参为t *testing.T或者b *testing.B
go 的test不会保证多个TestXxx是顺序执行,但是通常情况下会按照顺序执行
使用t.Run来执行subtest可以做到控制test 输出以及test的顺序执行
func TestPrint(t *testing.T){
t.Run("a1",func(t *testing.T){fmt.PrintLn("a1")}),
t.Run("a2",func(t *testing.T){fmt.PrintLn("a2")}),
}
TestMain: 初始化test,并且使用m.Run()来调用其他tests,可以完成一些需要初始化的testing, 如数据库连接,打开文件, REST服务登录等
是test case 入口
func TestMain(m *testing.M){
//此处初始化操作
fmt.PrintLn("test start") m.Run() }
如果没有在TestMain函数中调用m.Run.则不会执行TestMain以外的tests
package main import (
"fmt"
"testing"
) func testPrint(t *testing.T) {
res := Print1to20()
fmt.Println("hey")
if res != 210 {
t.Errorf("wrong result of Print1to20")
}
} func testPrint1(t *testing.T) {
res := Print1to20()
res++
if res != 211 {
t.Errorf("wrong result of Print1to20")
}
} func TestAll(t *testing.T) {
t.Run("testPrint", testPrint)
t.Run("testPrint1", testPrint1)
}
package main import (
"fmt"
"testing"
) func TestPrint(t *testing.T) {
res := Print1to20()
fmt.Println("hey")
if res != 210 {
t.Errorf("wrong result of Print1to20")
}
} func TestPrint1(t *testing.T) {
res := Print1to20()
res++
if res != 211 {
t.Errorf("wrong result of Print1to20")
}
} func TestMain(m *testing.M) {
fmt.Println("starting...")
m.Run()
}
go 学习笔记(2)go test的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
- ucos实时操作系统学习笔记——任务间通信(消息)
ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...
随机推荐
- 洛谷P2432 zxbsmk爱查错
题目 DP,需要注意边界上的问题. 状态定义\(dp[i]\)为句子第i位去除字母的最小值,答案就是\(dp[len]\). 易得状态转移方程为: \[dp[i]=min(dp[i-1]+1,dp[l ...
- C博客作业02——循环结构
0.展示PTA总分 单循环题目集 嵌套循环题目集 1.本章学习总结 1.1学习内容总结 (a)while语句 while(表达式) { 循环体语句: } 执行流程:当表达式的值为"真&quo ...
- JAVA学习网站分享
好久没用博客园了 最近工作不忙了,可以花时间自己学习知识提升自己,所以开始查找各种资料 java资源查找网站: http://www.java1234.com/ 前端学习网站: ...
- SpringMVC(上)
一.SpringMVC简介 (1)springMVC概述 Spring MVC属于SpringFrameWork的后续产品,Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块. 使用 ...
- C# 反射、使用场景
创建一个 Console 控制台应用程序, 1. 创建一个 Project 类 public class Project { public int ID { get; set; } public st ...
- python selenium chrome 实现自动化登录
1.环境安装 selenium的开发文档网址(英语好的可以直接看这个,写的很详细):http://selenium-python.readthedocs.io/ 因为实现的时候使用的是谷歌浏览器,在运 ...
- openstack错误问题定位及调试
- cnetos7 搭建wordpress(apache+php+mariadb)
.安装apache.php.php库 yum -y install httpd php php-mbstring php-pear 2.修改php配置文件地区 vim /etc/php.ini 在87 ...
- [LeetCode] 131. Palindrome Partitioning 回文分割
Given a string s, partition s such that every substring of the partition is a palindrome. Return all ...
- nginx启动命令以及与配置systemctl
一.配置systemctl之前的启动方式 进入sbin目录下执行以下命令: 启动nginx的命令为 /usr/local/nginx/sbin/nginx 3 停止nginx的命令为 /usr/loc ...