关于go语言的代码覆盖率测试,最开始我准备用go自带的go test来生成代码覆盖率统计,但是发现网上大部分都是用它来做单元测试的覆盖率,也有找到几篇文章是做自动化或系统测试的,但是都写的不够详细,我按照他们的步骤并没有成功生成覆盖率文件。
主要参考的文章如下:
https://www.cnblogs.com/zhaoxd07/p/8028847.html
https://www.elastic.co/blog/code-coverage-for-your-golang-system-tests
如果有同学按照文章中的方法成功生成了覆盖率文件,欢迎交流。
(我频繁的找这个作者问问题,小姐姐已经不接我的语音电话了,主要是因为她写这篇文章是好几年前,而且现在也不用go,所以没有办法解决我的疑问,仍然很感恩,对我一个陌生人这么友善)
幸运的是在上面文章的链接下,有个叫 大卡尔 的网友推荐了另外一个开源工具goc,比go test的功能还要强大,它提供了一种通用的方式,可以在程序运行时就能收集系统测试覆盖率结果。
以下均是参考大卡尔在github的goc项目以及一个bubble的go语言开源小项目的代码覆盖率测试实际演练,如有涉及侵权,可与我联系。
因为之前没有接触过go,所以我先在windows上熟悉了下go的语法,以及如何成功运行一个go项目。但是goc其实目前仅支持linux环境。
一、go环境安装
https://www.runoob.com/go/go-environment.html
二、windows下待测项目部署
go项目链接:https://github.com/Q1mi/bubble.git
项目步骤也可参考该项目的README.md:https://github.com/Q1mi/bubble#readme
1.### 进入go安装目录下的src目录:D:\program files\Go\src,cmd通过命令行下载项目
git clone https://github.com/Q1mi/bubble.git
2.### 配置MySQL
在数据库中执行以下命令,创建本项目所用的数据库:
CREATE DATABASE bubble DEFAULT CHARSET=utf8mb4;
3.### 在`bubble/conf/config.ini`文件中按如下提示配置数据库连接信息。
```ini
port = 9000
release = false
[mysql]
user = root
password = admin
host = 127.0.0.1
port = 3306
db = bubble
4.### 下载gin框架
添加两个环境变量,否则 go get 命令会很慢
GO111MODULE=on
GOPROXY=https://goproxy.cn,direct
下载gin
go get -u github.com/gin-gonic/gin
5.### 编译
cmd进入bubble目录,D:\program files\Go\src\bubble
go build -o bubble.exe bubble/
6.### 启动项目
bubble.exe conf/config.ini
启动之后,使用浏览器打开`http://127.0.0.1:9000/`即可,可以看到它实现了一个简单的待办清单功能,可进行增删查待办,并且标记待办为完成或未完成。