一:单元测试

1.为什么要做单元测试和性能测试

  • 减少bug
  • 快速定位bug
  • 减少调试时间
  • 提高代码质量

2.golang的单元测试

  • 单元测试代码的go文件必须以_test.go结尾
  • 单元测试的函数名必须以Test开头,是可导出公开的函数
  • 测试函数的签名必须接收一个指向testing.T类型的指针,并且不能返回任何值

3.golang单元测试组

  • 有好几个不同的输入以及输出组成的一组单元测试

4.测试覆盖率

  • go test -cover 直接输出覆盖率
  • go test -run TestAll 指定要运行的单元测试函数
  • go test -cover -coverprofile=c.out
  • go tool cover -html=c.out -o coverage.html 输出具体的代码覆盖情况

二:性能测试

  • 执行所有函数 go test -bench=".*"

  • 执行指定函数 go test -bench="BenchmarkWithPool"

  • 生成内存和cpu分析文件 go test -bench="BenchmarkWithPool" -cpuprofile cpu.out -memprofile mem.out

  • 分析cpu文件 go tool pprof cpu.out

  • 分析内存文件 go tool pprof mem.out

  • 输出png图 图中红色方块面积越大 证明申请的内存越大或者消耗cpu越多

源码链接

golang 单元测试&&性能测试的更多相关文章

  1. [Go] 单元测试/性能测试 (go test)

    特征 Golang 单元测试对文件名和方法名,参数都有很严格的要求.例如: 1.文件名必须以 _test.go 结尾 2.方法名必须是 Test 开头 3.方法参数必须是 t *testing.T 或 ...

  2. Golang RPC 性能测试

    Golang RPC 性能测试 | KDF5000 http://kdf5000.com/2017/03/28/Golang-RPC-性能测试/

  3. ARTS-S golang单元测试

    golang单元测试 在$GOPATH的src目录下建目录demo_unittest 在目录demo_unittest下建文件calc.go,内容如下: package demo_unittest f ...

  4. Golang单元测试框架整理

    目录 一.单元测试是什么 二.单元测试的意义 三.Golang单元测试框架 3.1 Golang内置testing包 3.1.1 简单的测试 3.1.2 Benchmark 基准测试 3.1.3 运行 ...

  5. 【GoLang】GoLang 单元测试、性能测试使用方法

    单元测试代码: ackage test import ( // "fmt" "testing" ) func Test_FlowControl(t *testi ...

  6. Golang 单元测试和性能测试

    开发程序其中很重要的一点是测试,我们如何保证代码的质量,如何保证每个函数是可运行,运行结果是正确的,又如何保证写出来的代码性能是好的,我们知道单元测试的重点在于发现程序设计或实现的逻辑错误,使问题及早 ...

  7. golang 单元测试

    单元测试是质量保证十分重要的一环,好的单元测试不仅能及时地发现问题,更能够方便地调试,提高生产效率.所以很多人认为写单元测试是需要额外的时间,会降低生产效率,是对单元测试最大的偏见和误解. go 语言 ...

  8. golang 单元测试(一)

    单元测试函数类型 Test(功能测试) 函数规则: 函数名: TestXxxx , 以Test为前缀.Xxxx以大写字母开头 参数类型: *testing.T func TestXxxx(t *tes ...

  9. golang单元测试简述

      Golang中内置了对单元测试的支持,不需要像Java一样引入第三方Jar才能进行测试,下面将分别介绍Golang所支持的几种测试: 一.测试类型   Golang中单元测试有功能测试.基准测试. ...

随机推荐

  1. corefx 源码学习:NetworkStream.ReadAsync 是如何从 Socket 异步读取数据的

    最近遇到 NetworkStream.ReadAsync 在 Linux 上高并发读取数据的问题,由此激发了阅读 corefx 中 System.Net.Sockets 实现源码(基于 corefx ...

  2. Binding的三种方式

    1 Text="{Binding Name}" Name为后台的属性 2 Text="{Binding ElementName=XXX,Path=A.B.C.D….}&q ...

  3. EF 导航属性的使用

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  4. 将自定义控件加载到RichTextbox并进行交互

    先前遇到一个问题,将自定义控件加载到RichTextbox后,无法触发自定义控件的各种事件,最终找到解决办法:设置RichTextbox的IsDocumentEnabled="True&qu ...

  5. 基于vue开发的多功能的时间选择器组件,开箱即用

    好一段时间没有写过博客了,在国庆期间心血来潮优化了一个组件,在日常开发中时常会有需求用到时间选择器,不同的项目需求可能会不一样.近期开发的几个项目中就有需求用到这样的选择器,由于以前有用到相关的组件, ...

  6. js操作select控件大全(包含新增、修改、删除、选中、清空、判断存在等)

    原文:js操作select控件大全(包含新增.修改.删除.选中.清空.判断存在等) js操作select控件大全(包含新增.修改.删除.选中.清空.判断存在等) js 代码// 1.判断select选 ...

  7. MQTT-CN MQTT协议中文版

    欢迎任何形式的转载,但请务必注明出处:http://www.cnblogs.com/liangjingyang 项目地址:https://github.com/liangjingyang/MQTT-C ...

  8. c# 获取cook

    using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServi ...

  9. python中的变量,字符串,用户交互,if语句

    一:python介绍 python的创始人为吉多·范罗苏姆,创始时间是1989年. 1python是一门什么样的语言 python是一门解释型弱类型语言★ 弱类型:弱类型的变量可以变,强类型的变量不能 ...

  10. shell多线程

    a='a1' b='b1' c='c1' d='d1' e='e1' ARR=($a $b $c $d $e) rd=`date +%N` for i in ${ARR[*]} do { ;>& ...