golang的测试与build

testing包提供了对Go包的自动测试支持。go test 命令会自动执行所以符合格式

func TestXXX(t *testing.T) 

 当带着 -bench=“.” ( 参数必须有!)来执行*go test命令的时候性能测试程序就会被顺序执行。

func BenchmarkXxx(b *testing.B)

执行 go test -bench=”.” 

-benchmem 显示内存信息 go test -bench=. -benchmem a_test.go

测试某个方法:(指定某个方法名称)

go test -v . -test.run TestClient_V2ApkSandboxHistory

如何使用 go mod

简单使用

mkdir hello
cd hello 
go mod init hello 
# 此时会出现一个hello下会出现一个 go.mod 目录
# 需要下载 所有第三方包时 go mod download
# 下载第三包可以直接使用 go get need_pkg
# 下载好的依赖 和 版本 会加入到 go.mod 里面,
# 下载好的第三包 会放在到$GOPATH/pkg/mod 中
# 没有设置GOPATH的话 下载好的第三方包会放在~/go/pkg/mod
# 如果你想放在当前目前可以执行如下命令
go mod vendor    
# 此时你的包就会出现在vendor下了,意思是将依赖包放在vendor中

go mod tidy
# 检测依赖的包,下载使用到的包,剔除未使用的包

关于依赖升级

go list -m -u all 来检查可以升级的package
go get -u  升级所有依赖
go get -u need-pack 升级指定的依赖  

关于依赖打包

go build  -ldflags="-s -w" -o app ./main.go
# -ldflags="-s -w" 压缩程序

github 拉取 他人含有go.mod的项目时,下载所有第三方包

go mod download

关于如何使用本地自定义包,需要现在本地引入的包目录下执行 go mod init modulename

使用require + replace 将包名替换为本地包

require GoTools/db/mysql v0.0.0
replace GoTools/db/mysql => "../GoTools/db/mysql"

配置拉取本地私有镜像:

需要配置~/.gitconfig

[url “git@w.src.corp.qihoo.net:”]
insteadOf = https://w.src.corp.qihoo.net/

git config --global url."git@w.src.corp.qihoo.net:".insteadOf https://w.src.corp.qihoo.net/

如果不成功,添加环境变量

go env -w GOPRIVATE=v.src.corp.qihoo.net
多个设置 *
go env -w GOPRIVATE="*.src.corp.qihoo.net"

执行 go install -x

如果是gitlab的三级目录:需要配置 ~/.netrc, 格式如下:

machine gitlab.com login 账号 password 密码或者访问令牌
例如:machine w.src.corp.qihoo.net login guomei password xxx
然后执行, go get -u xxxx
如果拉取过程中报错:connect: connection refused
则执行时清空代理配置,例如:
GOPROXY="" go get -insecure w.src.corp.qihoo.net/pubsec/microservice/interface-agent/pkg/model/common/netlab

阿里代理仓库

地址
https://mirrors.aliyun.com/goproxy/

导出环境变量

export GOPROXY=https://mirrors.aliyun.com/goproxy/

You May Also Like

About the Author: daidai5771

发表评论

电子邮件地址不会被公开。 必填项已用*标注