go测试跨包代码覆盖率
Golang虽然只是一门编程语言,但也为我们提供了不少工具,其中测试工具是最常用的,大概
前提概要
以前看书,只说了用什么工具去做覆盖率,和基本的使用,当时看了也没想太多。后面真正做项目了,老大要求比较规范,每行代码都要跑过,就想到了覆盖率测试工具,但用的时候才发现,按书上的步骤来做,只能测试当前包中的代码,其他包的代码覆盖率没有。
解决方案
在查阅了一些问答以后,找到了办法,原来Golang也是有提供的。
就是使用 “-coverpkg”,具体我们用例子讲解
Demo
项目结构如下
代码如下
main.go
package gotest import (
"gotest/q"
) func main() {
q.Print()
}
q.go
package q import (
"fmt"
) var Q []string func init() {
fmt.Println("q init")
Q = append(Q, "q init")
} func Print() {
fmt.Println("q Print")
}
go_test.go
package gotest import (
"testing"
) func TestMain(t *testing.T) {
main()
}
我想测试main函数,而main函数调用了q.go的代码,直接用下面的命令只能测到当前包的。
go test -coverprofile="c.out"
go tool cover -html="c.out"
当使用 "-coverpkg"时,就能出现我想要的结果了。
go test -coverprofile="c.out" -coverpkg=".,./q"
go tool cover -html="c.out"
我们也可以用 "..." 表示所有引用到的包,这就比较大了,把标准库都会算进来。
go test -coverprofile="c.out" -coverpkg="..."
go tool cover -html="c.out"
注意
很多书上的教程运行环境都是Linux的,命令的参数值没有引号包裹,如:
go test -coverprofile=c.out
这样在Windows下是会报错的,所以最好用引号包裹起来,这样兼容性较好。
go测试跨包代码覆盖率的更多相关文章
- asp.net core 系列之允许跨域访问2之测试跨域(Enable Cross-Origin Requests:CORS)
这一节主要讲如何测试跨域问题 你可以直接在官网下载示例代码,也可以自己写,我这里直接使用官网样例进行演示 样例代码下载: Cors 一.提供服务方,这里使用的是API 1.创建一个API项目.或者直接 ...
- 安全测试 - 抓包工具BurpSuite
Brup SuiteBurpSuite是用于攻击web应用程序的集成平台.它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程.所有的工具都共享一个能处理并显示HTTP消息,持久 ...
- web安全测试---跨站点脚本测试
1.1 跨站脚本测试 1.1.1 GET方式跨站脚本测试 编号 SEC_Web_XSS_01 测试用例名称 GET方式跨站脚本测试 测试目的 由于跨站脚本会导致会话被劫持.敏感 ...
- angular8 配置 测试环境打包指令 生成测试环境包指令
1.angular.json 文件中在architect 下添加 buildTest指令 距离位置 projects => (你的项目名称) => architect 下和 build 指 ...
- python基础语法13 内置模块 subprocess,re模块,logging日志记录模块,防止导入模块时自动执行测试功能,包的理论
subprocess模块: - 可以通过python代码给操作系统终端发送命令, 并且可以返回结果. sub: 子 process: 进程 import subprocess while Tru ...
- CSIC_716_20191119【常用模块的用法 subprocess、re、logging、防止自动测试、包的理论】
subprocess模块 可以通过python代码给操作系统终端发送命令,并可以得到返回结果. import subprocess str = input('>>>请输入命令') # ...
- Kali渗透测试2-抓包/DNS工具
转载请注明出处. TCPDUMP:命令行网络抓包工具tcpdump -h tcpdump version 4.9.2 libpcap version 1.8.1 OpenSSL 1.1.0h 27 M ...
- java import跨包引用类理解
当前类要用其他类时,import具体包路径+.+具体的类 import引入的是被引用类的class文件,所以当我们build path第三方jar包时, 要用他们的类,要把jar包add to bui ...
- ping测试丢包率
测试环境:Centos 6.4 增加参数:-i 例如: #ping -i 0.01 172.16.3.1 则每隔0.01秒ping一次
- Python多线程Selenium跨浏览器测试
前言 在web测试中,不可避免的一个测试就是浏览器兼容性测试,在没有自动化测试前,我们总是苦逼的在一台或多台机器上安装N种浏览器,然后手工在不同的浏览器上验证主业务流程和关键功能模块功能,以检测不同浏 ...
随机推荐
- 如何在wpf窗口中播放PPT。
前一段时间接到一个需求(大概内容讲一下): 将PPT播放窗口嵌入到我们的系统中,用自己系统控制PPT的播放,在PPT页面上可以手写将手写内容记录下来. 一开始,对于WPF还是一个彩笔的我是懵逼的.后来 ...
- CMYK与RGB参数转换公式及转换方法
1. RGB色彩模式 自然界中绝大部分的可见光谱可以用红.绿和蓝三色光按不同比例和强度的混合来表示.RGB分别代表着3种颜色:R代表红色,G代表绿色.B代表蓝色.RGB模型也称为加色模型,如图5所示. ...
- 【Amadeus原创】更改docker run启动参数
经过一整天的摸索,答案: 没法直接修改.只能另外创建. 但是还好不用完全重头来,用docker commit命令可以基于当前修改的内容创建一个新的image. 执行docker 看看帮助先: Comm ...
- HLS视频加密,让您的视频内容更安全!
** 背景介绍** HLS视频加密是一种基于HTTP Live Streaming(HLS)协议的加密技术.它的核心思想是将视频切片进行加密处理,在客户端播放时需要先获取解密密钥才能正常偶发.通过这种 ...
- Smalltalk 和 VB
在水木看到一个帖为什么 Smalltalk 没落了?,提到两篇好文: http://www.wirfs-brock.com/allen/posts/914 https://gbracha.blogsp ...
- Kubernetes 可能是分布式架构的大结局了
前两年在爬虫里折腾的太久了,最近快马加鞭追赶分布式架构潮流. SpringCloud.Dubbo.ServiceComb 刷完,以为分布式架构就是这样了.这批架构可能也就 Java 栈的人会感觉它们特 ...
- Windows 11 下 Virtualbox 6.1.34 出现 End kernel panic - not syncing: attempted to kill the idle task
前言小半年没用 Virtualbox 了,切换到了 VMware,今天又切换回去(无聊),但是安装虚拟机出现这个错误. 解决方法根据 Virtualbox 论坛的讨论[1]和[2],首先明确 系统必须 ...
- 在不同操作系统上安装 PostgreSQL
title: 在不同操作系统上安装 PostgreSQL date: 2024/12/26 updated: 2024/12/26 author: cmdragon excerpt: PostgreS ...
- Qt4/5升级到Qt6吐血经验总结V202308
00:直观总结 增加了很多轮子,同时原有模块拆分的也更细致,估计为了方便拓展个管理. 把一些过度封装的东西移除了(比如同样的功能有多个函数),保证了只有一个函数执行该功能. 把一些Qt5中兼容Qt4的 ...
- Qt开源作品22-运行时间记录类
一.前言 在早期开发的软件中,尤其是初学者入门者写的软件,软件运行久了,难免遇到意外崩溃的时候,可是大部分的运行设备可能在现场客户那,需要记住每一次从软件启动后到软件意外关闭前的运行时间,需要记录的信 ...