matlab测试覆盖率统计,golang 统计系统测试覆盖率

golang 统计系统测试覆盖率

参考资料

操作步骤

编写main_test文件

看一下main()函数所在的go文件名称,直接命名为*test.go文件即可。如motan的main()函数在agent.go中,将main test文件命名为agenttest.go

maintest.go与main.go同级目录,如agent.go与agenttest.go同级目录

main test文件内容如下

package main

// This file is mandatory as otherwise the filebeat.test binary is not generated correctly.

import (

"testing"

"flag"

)

var systemTest *bool

func init() {

systemTest = flag.Bool("systemTest", false, "Set to true when running system tests")

}

// Test started when the test binary is started. Only calls main.

func TestSystem(t *testing.T) {

if *systemTest {

main()

}

}

* main_test.go文件是必须存在的,否则无法生成二进制文件

编译代码

将main函数中的os.Exit()更改为return;如果main()函数是启动server,可以再启动一个线程启动server,避免执行到main函数时程序hang住不能执行后面的testcase,如agent.go

func main() {

ext := wmotan.GetWeiboExtentionFactory()

wmotan.UpdateLocalIPByConn("")

agent := motan.NewAgent(ext)

agent.RegisterManageHandler("/200", wmotan.CreateStatusChangeHandler(agent))

agent.RegisterManageHandler("/503", wmotan.CreateStatusChangeHandler(agent))

(&mtool.DebugHandler{}).Register()

//另启动一个线程启动服务

go agent.StartMotanAgent()

time.Sleep(time.Second * 60)

return

}

将main.go、maintest.go及main.go中需要的配置文件拷贝到自动化测试工程,如将agent.go及agenttest.go拷贝到测试代码目录下,目录如下:

├── agent.go

├── agent_test.go

├── base

│   ├── base.go

│   └── config.go

├── clientdemo.yaml

├── manage_test.go

├── motan-go-regression.test

├── motan.yaml

├── protocol_test.go

└── server

│ ├── serverdemo.go

│ └── serverdemo.yaml

编译,参数说明

-c表示生成测试二进制文件

-covermode=count表示生成的二进制中国年包含覆盖率计数信息

-coverpkg后面要统计覆盖率的文件源码

-o 后面是输出的二进制文件名

go test -c -covermode=count -coverpkg .,../../github.com/weibocom/motan-go/,../../github.com/weibocom/motan-go/cluster,../../github.com/weibocom/motan-go/config,../../github.com/weibocom/motan-go/core,../../github.com/weibocom/motan-go/endpoint,../../github.com/weibocom/motan-go/filter,../../github.com/weibocom/motan-go/ha,../../github.com/weibocom/motan-go/lb,../../github.com/weibocom/motan-go/protocol,../../github.com/weibocom/motan-go/provider,../../github.com/weibocom/motan-go/registry,../../github.com/weibocom/motan-go/serialize,../../github.com/weibocom/motan-go/server -o main.test

执行命令,生成一个二进制文件main.test

启动服务: -systemTest用于启动main_test.go中的main函数(启动server);-test.coverprofile用来指定覆盖率信息写入哪个文件

启动服务后也会自动执行当前目录下的测试case

./main.test -systemTest -test.coverprofile coverage.cov

执行完毕后(测试用例执行完毕),在当前目录下会生成coverage.cov文件

统计覆盖率

使用go工具链生成html文件

go tool cover -html=./coverage.cov -o coverage.html

在浏览器下打开html文件,格式如下

44beebf35f20cee7a171125eff627c83.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值