如何使用golang自带工具对代码进行覆盖率测试

在 Go 语言中,测试代码覆盖率通常使用 go test 命令结合 -cover-coverprofile

1. 基本代码覆盖率报告

在项目目录下运行以下命令

go test -cover

这将在控制台输出一个代码覆盖率的百分比。但是,这种方式不会保存覆盖率数据(可以指定目录,如:./test)
在这里插入图片描述

2. 生成带覆盖率数据文件

go test -coverprofile=demo6.out

这将在当前目录下生成一个名为 demo6.out 的文件,该文件包含了详细的覆盖率数据。

3. 通过go tool 命令查看上一步生成的覆盖率信息

go tool cover -html=demo6.out

运行命令会自动打开浏览器,页面会显示哪些覆盖了那些未覆盖:在这里插入图片描述

4 查看具体函数覆盖率报告
go tool cover -func=demo6.out

如下
在这里插入图片描述

测试使用的代码

calculator.go

// mathutil/add.go
package demo6

import "errors"

func Add(a, b float64) float64 {
	return a + b
}

func Subtract(a, b float64) float64 {
	return a - b
}

func Multiply(a, b float64) float64 {
	return a * b
}

func Divide(a, b float64) (float64, error) {
	if b == 0 {
		return 0, errors.New("division by zero")
	}
	return a / b, nil
}

calculator_test.go

package demo6

import (
	"testing"
)
func TestAdd(t *testing.T) {
	Add(1,2)
}
func TestSubtract(t *testing.T)  {
	Subtract(1,2)
}

在这里插入图片描述

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的使用海康SDK实现语音对讲功能的golang代码示例: ```go package main import ( "fmt" "os" "time" "unsafe" "github.com/hongrichang/poc/hikvision" ) func main() { // 初始化SDK err := hikvision.Init() if err != nil { fmt.Println("SDK初始化失败:", err) return } defer hikvision.Cleanup() // 登录设备 deviceIP := "192.168.1.64" username := "admin" password := "admin123" loginID, err := hikvision.Login(deviceIP, username, password) if err != nil { fmt.Println("登录设备失败:", err) return } defer hikvision.Logout(loginID) // 开启语音对讲 voiceComHandle, err := hikvision.StartVoiceCom(loginID) if err != nil { fmt.Println("开启语音对讲失败:", err) return } defer hikvision.StopVoiceCom(voiceComHandle) // 发送语音数据 filepath := "/path/to/audio/file.pcm" file, err := os.Open(filepath) if err != nil { fmt.Println("打开音频文件失败:", err) return } defer file.Close() buffer := make([]byte, hikvision.VoiceDataLength) for { n, err := file.Read(buffer) if err != nil { fmt.Println("读取音频数据失败:", err) return } if n == 0 { break } voiceData := hikvision.VoiceData{ Length: hikvision.VoiceDataLength, AudioFlag: 0, AudioFormat: 1, SampleRate: 8000, SampleBits: 16, Channel: 1, Data: (*byte)(unsafe.Pointer(&buffer[0])), } err = hikvision.SendVoiceData(voiceComHandle, voiceData) if err != nil { fmt.Println("发送语音数据失败:", err) return } time.Sleep(time.Millisecond * 20) } fmt.Println("语音数据发送完毕") } ``` 需要注意的是,以上示例代码仅供参考,实际使用时需要根据具体的需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值