一:单元测试 1.为什么要做单元测试和性能测试 减少bug 快速定位bug 减少调试时间 提高代码质量 2.golang的单元测试 单元测试代码的go文件必须以_test.go结尾 单元测试的函数名必须以Test开头,是可导出公开的函数 测试函数的签名必须接收一个指向testing.T类型的指针,并且不能返回任何值 3.golang单元测试组 有好几个不同的输入以及输出组成的一组单元测试 4.测试覆盖率 go test -cover 直接输出覆盖率 go test -run TestAll 指定…
目录 golang编译源代码和交叉编译方法 编译源代码 编译go1.4 编译go1.12 交叉编译 golang编译源代码和交叉编译方法 编译源代码 golang编译其实很简单,下载一份最新的源代码后,进入src目录运行all.bash即可, 但是你可能会遇到下面问题,这是因为现在golang都是用go语言编译的了,所以你的系统必须先安装好 >= go1.4 的版本. ./all.bash Building Go cmd/dist using /home/ailumiyana/go1.4. ER…
init()和main()方法是golang默认的两个方法,不需要我们调用,程序执行会自动寻找项目中的这俩方法.现在我们就讲一种通用的情况:main 包下 导入了 init2 包而在init2 包下又导入了init3 包,三个包下都有自己的init 方法,初始化的顺序又是怎么的呢?先看一段代码: // demo_init1.go package main import "golang_thinking/src/article_init/init2" import "fmt&q…
特征 Golang 单元测试对文件名和方法名,参数都有很严格的要求.例如: 1.文件名必须以 _test.go 结尾 2.方法名必须是 Test 开头 3.方法参数必须是 t *testing.T 或 b *testing.B 命令详解 go test 是 go 语言自带的测试工具,其中包含的是两类,单元测试(即 功能测试) 和 性能测试 通过 go help test 可以看到 go test 的使用说明: 格式: go test [-c] [-i] [build flags] [packag…
前面讲过在Windows执行性能测试的方法,就是这篇了<jmeter - 一个完整的接口测试的脚本>, 在Windows执行性能测试之前,首先要有1个性能测试脚本嘛, 但是这个性能测试脚本是不是直接可以在Linux上面使用?当然可以了. 那什么时候不可以呢?参数化的时候不可以,因为需要读本地的.csv文件,路经需要修改一小下. 因此,才有了另一篇<Jmeter - 构建1个可供Linux使用的Jmeter测试脚本 - 共3个步骤>. 那么,已经讲到:已经构建好了可供Linux使用的…
之所以把标题补充为<Jmeter - 在Linux执行性能测试的方法 [2]>,是因为在执行性能测试的过程中,我们需要关注的对象无非就是"测试服务器", 那么除了使用一些常见的观察服务器的Linux命令外,还可以使用1个工具,它就是nmon. 安装nmon //去"测试服务器"查看在本机是否已经存在了nmon这个工具 $nmon 如果本机没有安装nmon,那么系统会提示“ nmon: command not found” //此时需要在本机安装它 apt-get install nmon //…
单元测试的基本方法是调用被测代码的函数,输入函数的参数值,获取返回结果,然后与预期测试结果进行比较,如果相等则认为测试通过,否则认为测试不通过. 1.Assert类的使用 Assert.Inconclusive()    表示一个未验证的测试: Assert.AreEqual()         测试指定的值是否相等,如果相等,则测试通过: int actual = account.Get(5); Assert.AreEqual("9", actual); AreSame()     …
在进行单元测试或者main方法时,在 运行/调试 设置中设置想要使用的测试单位的 before launch 即可…
[golang]golang如何覆盖输出console,实现进度条 package main import( "fmt" "os" "time" ) func main(){ ;i!=;i=i+{ fmt.Fprintf(os.Stdout,"result is %d\r",i) time.Sleep(time.Second*) } fmt.Println("Over") } golang一个骚气的进度提示…
单元测试代码: ackage test import ( // "fmt" "testing" ) func Test_FlowControl(t *testing.T) { { // fmt.Println("x is 10") t.Log("x is 10") } else { // fmt.Println("x is not 10") t.Log("x is not 10") }…
之前一直再找如何将geojson 转为 svg 格式的数据,看到github上大多都是js来转的,只有一篇是golang来做的,想来把它封成dll 给c#.c++ 调用,网上查了很多方法,并没有写的很详细,以至于让我绕了很大的圈子,今天把它记录下来方便以后查看,下面是代码 package main import "C" import ( "fmt" "github.com/fapian/geojson2svg/pkg/geojson2svg" )…
golang自家的单元测试做的很好了,自需要"文件名_test.go" 就可以在里面写单元测试,而且go test命令也很强大,可以只运行单个测试函数,在goland 可以点击单元测试函数前面的图标,但是切换到vscode就需要自己动手了.go test 主要参考https://godoc.org/testing单元测试写起来也比较容易,设定号 输入 判断 输出 与预想是否一致,一致则ok,否则 则报错.单元测试是一门学问,考虑的问题也很多,比如很多边界问题.如何自动化.测试样本等等很…
在接触到go之前,我认为函数和方法只是同一个东西的两个名字而已(在我熟悉的c/c++,python,java中没有明显的区别),但是在golang中者完全是两个不同的东西.官方的解释是,方法是包含了接收者的函数.到底什么意思呢. 首先函数的格式是固定的,func+函数名+ 参数 + 返回值(可选) + 函数体.例 func main() { fmt.Println("Hello go") } 在golang中有两个特殊的函数,main函数和init函数,main函数不用介绍在所有语言中…
https://github.com/takama/daemon https://github.com/immortal/immortal/blob/master/fork.go                  这个是比较原始的最接近c语言的实现,它里面还有很多原始c语言的东西的golang实现: // fork.gopackage immortal import ( "os" "os/exec" "syscall" ) // Fork cre…
golang的 MD5加密.BASE64解密  guid 的代码: /** * 用于加密,解密,(包含MD5加密和base64加密/解密)以及GUID的生成 * 时间: * zhifieya */ package safe import ( "crypto/md5" "crypto/rand" "crypto/sha1" "encoding/base64" "encoding/hex" "io&q…
假设要在$GOPATH/pkg/$GOOS_$GOARCH/basepath/ProjectName/目录下开发一个名为xxx的package.(这里basepath指的是github.com/michael-lau) 步骤如下: 在$GOPATH/pkg/$GOOS_$GOARCH/basepath/ProjectName/目录下新建一个目录,命名为A(目录的名字可以任取,和包名没有关系,只要最终客户端程序import的时候保持和这个目录一致即可.不过推荐和包名一致). 然后在A这个目录下编写…
函数:对应操作序列,是程序的基本组成元素. 函数有具名和匿名之分:具名函数一般对应于包级的函数,是匿名函数的一种特例,当匿名函数引用了外部作用域中的变量时就成了闭包函数,闭包函数是函数式编程语言的核心.方法是绑 定到一个具体类型的特殊函数,Go语言中的方法是依托于类型的,必须在编译时静态绑定 接口:定义了方法的集合,这些方法依托于运行时的接口对象,因此接口对应的方法是在运行时动态绑定的. Go程序函数启动顺序的示意图: 要注意的是,在 main.main 函数执行之前所有代码都运行在同一个gor…
文件名必须以_test.go结尾 使用go test 执行单元测试 例 package main func add(a, b int) int { return a + b } func sub(a, b int) int { return a - b } calc.go package main import ( "testing" ) func TestAdd(t *testing.T) { r := add(, ) { t.Fatalf(, r) } t.Logf("t…
结构体的定义 结构体是将零个或者多个任意类型的命令变量组合在一起的聚合数据类型.每个变量都叫做结构体的成员. 其实简单理解,Go语言的结构体struct和其他语言的类class有相等的地位,但是GO语言放弃了包括继承在内的大量面向对象的特性,只保留了组合这个基础的特性.所有的Go语言类型除了指针类型外,都可以有自己的方法. 先通过一个下的例子理解struct. package main import "fmt" type Student struct { Name string Age…
在go中,函数类型是一等类型,这意味着可以吧函数当做一个值来传递和使用. func divide(dividend int,divisor int)(int,error){ //省略部分代码 } 参数列表中的参数必须有名称,结果列表中结果的名称可有可无(要么都省略名称,要么都有名称). func divide(dividend int,divisor int)(result int, err error){ //省略部分代码 } 函数体中每个条件分支的最后一般都要有return语句,“retur…
安装 参考github的说明 添加GOPATH 创建workspace 创建新文件 运行程序 Liteide中运行程序有两种方式: FR(FileRun)是编译并运行单个文件,可以使用Shift + Alt + R快捷键: BR(BuildAndRun)是编译运行整个项目,可以使用Command + R快捷键. 编译运行单个文件和编译运行整个项目的区别在于: 编译运行整个项目的时候,只允许一个源文件中有main函数: 编译运行单个项目的时候,允许多个源文件包含main函数,运行的时候并不会出现报…
package main import ( "fmt" "github.com/garyburd/redigo/redis" ) var pool *redis.Pool func init() { pool = &redis.Pool{ MaxIdle: 8, MaxActive: 0, IdleTimeout: 300, Dial: func() (redis.Conn, error) { return redis.Dial("tcp"…
func Call(m map[string]interface{}, name string, params ...interface{}) ([]reflect.Value, error) { f := reflect.ValueOf(m[name]) if len(params) != f.Type().NumIn() { return nil, errors.New("the number of input params not match!") } in := make([]…
package main import ( "fmt" "learner/Add" "time" ) //a. 普通类型,普通变量保存的就是值,也叫值类型 //b. 获取普通变量的内存地址,用&,比如: var a int, 获取a的内存地址:&a //c. 指针类型,指针变量存的就是一个内存地址,这个地址指向值 //d. 获取指针类型所指向的值,使用:*,比如:var *p int, 使用*p获取p指向的值 //e. 将一个内存…
1)func Contains(s, substr string) bool这个函数是查找某个字符是否在这个字符串中存在,存在返回true 示例如下: import ( "fmt" "strings" ) func main() { fmt.Println(strings.Contains("widuu", "wi")) //true fmt.Println(strings.Contains("wi", &…
基础 可以通过 go test -h 查看帮助信息. 其基本形式是: go test [build/test flags] [packages] [build/test flags & test binary flags] 执行 go test 命令,它会在 *_test.go 中寻找 test 测试.benchmark 基准 和 examples 示例 函数.测试函数必须以 TestXXX 的函数名出现(XXX 为以非小写字母开头),基准函数必须以 BenchmarkXXX 的函数名出现,示例…
如下图所示将Proxy设置为:https://goproxy.io/…
https://lrita.github.io/2017/12/12/golang-asm/#why 在某些场景下,我们需要进行一些特殊优化,因此我们可能需要用到golang汇编,golang汇编源于plan9,此方面的 介绍很多,就不进行展开了.我们WHY和HOW开始讲起. golang汇编相关的内容还是很少的,而且多数都语焉不详,而且缺乏细节.对于之前没有汇编经验的人来说,是很难 理解的.而且很多资料都过时了,包括官方文档的一些细节也未及时更新.因此需要掌握该知识的人需要仔细揣摩, 反复实验…
Q1:Unable to load file via resource "SqlMap.config" as resource.Cause : 未能找到文件:"...TestResults\yonyou 2015-09-28 14_10_10\Out\SqlMap.config” A1:项目在做单元测试的时候,自动会生成一个TestResults文件夹.每次做单元测试的时候,会自动在该文件夹下生成一个文件夹,里面包含了输出文件夹,例如:\TestResults\yonyou…
1.单元测试可以对系统逻辑进行每个单元模块的测试. 2.单元测试也可以作为回归测试的依据,可以避免升级完善功能时引入问题. 3.单元测试要求将代码写的更清晰,更易于测试. 4.有时单元测试需要测试私有方法以及私有静态方法可以采用下述反射方式. @Test public void testGetKey(){ Map<String,Object> map = new HashMap<String,Object>(); map.put("pin","abc&…