首先安装搭建go的开发环境,方法见相应文档
go test #执行单元测试
go test -v #打印执行的详细信息,即使测试成功(默认情况下测试成功是不打印结果的)
go test -v xxx #执行指定文件的单元测试(此处注意,go只会读取go/src下面的目录。所以写文件路径不需要加go/src)
go test -v xxx> test # 执行指定文件的单元测试并且将结果写入文档(文件名根据自己需要设置,文件内容=终端显示)
go test -v xxx -json # 执行指定文件的单元测试并且将结果转化为json格式
go test -v xxx -json > test.json # 执行指定文件的单元测试并且将结果转化为json格式写入文档(文件名根据自己需要设置,文件内容=终端显示)
go test -bench=. #执行性能测试
go test -bench=. -v #显示执行的详细信息
go get -u github.com/jstemmer/go-junit-report #安装报告模板插件
go test -v xx/xx | go-junit-report > test.xml #测试指定文件,并直接生成xml报告
go test -cover #即可在终端看到覆盖率
go test -coverprofile=covprofile #将覆盖率结果写入文档(文件名根据自己需要设置,文件内容=终端显示)
go tool cover -html=covprofile -o coverage.html #将上面生成的文件转成html,打开html即可看到覆盖/未覆盖的具体代码
go tool cover -func=covprofile -o coverage.txt #将上面生成的文件转成txt,打开html即可看到覆盖率详细统计数据
模式 | 解释 |
---|---|
set | 缺省模式,只记录语句是否被执行 |
count | 记录语句被执行的次数 |
stomic | 记录语句被执行的次数,并保证在并发执行时的正确性 |
go get github.com/axw/gocov/... #安装gocov(本人安装后一直提示gocov未找到命令)
go get github.com/AlekSi/gocov-xml #安装转换插件
gocov convert xxx | gocov-xml > coverage.xml #转换执行结果文件,为xml文件
go get github.com/t-yuki/gocover-cobertura # 安装转换工具
./xxx/xx/gocover-cobertura < xx/xx/covprofile > xx/coverage.xml #转换,运行工具准换指定文件为xml文件,并存储在指定位置
go test -c -covermode=count -coverpkg #执行生成一个.test的可执行文件
./ xxx.test #执行这个可执行文件
go get github.com/axw/gocov/...
gocov test xx/xxx #统计指定文件下的测试覆盖率
gocov test xx/xxx > xxxx #统计指定文件下的测试覆盖率,并将结果写入指定文件内(文件内容=终端显示)
go get github.com/AlekSi/gocov-xml # 安装转换xml文件的插件
gocov test xx/xx | gocov-xml > coverage.xml # 统计指定文件下的测试覆盖率,并生成xml报告
go vet #执行检测
go vet -n #打印执行的命令而并不真正执行它们,也不会取消命令的执行
go vet -x #进行实质的执行
go vet -n xxx/xxx #检测指定文件夹
go vet -n xxx/xxx 2> xxxxx/xxx #检测指定文件夹并将结果生成报告到指定文件夹
go get -u github.com/golang/lint/golint #百度有很多方式但是只有这种可行
cd xx/xx #相应的项目目录
golint xx/xx #指定目录扫描
golint xx/xx > xx/xx #扫描指定目录,并将结果写入指定目录内
go get github.com/alecthomas/gometalinter #遇坑没有安装git,sudo apt install git安装即可
gometalinter --install --update
cd xx/xx #相应的项目目录
gometalinter
gometalinter xx/xx #指定目录扫描
gometalinter xx/xx > xx/xx #扫描指定目录,并将结果写入指定目录内
gometalinter --checkstyle xx/xx > xx/xx.xml #扫描指定目录,并将结果(checkstyle XML格式)已写入指定目录内
压力测试用来检测函数(方法)的性能,和编写单元功能测试的方法类似,此处不再赘述,但需要注意以下几点:
func BenchmarkXXX(b *testing.B) { ... }