zvvq技术分享网

为 golang 框架编写单元测试时应避免哪些常见错误

作者:zvvq博客网
导读为 go 框架编写单元测试时应避免的常见错误:不测试错误依赖于 dbms 详情测试 godoc 文档依赖于外部服务测试过于宽泛 为 Go 框架编写单元测试时应避免的常见错误 单元测试在维护可扩

为 go 架构撰写单元测试时要防止的常见错误:不检测错误取决于 dbms 详情检测 godoc 文档取决于外界服务检测过度广泛

本文来自zvvq

内容来自samhan

为 Go 架构撰写单元测试时要防止的常见错误 zvvq好,好zvvq

单元测试在维护可扩展、平稳和可靠的 Go 架构层面尤为重要。但是,要是没有遵照良好实践,单元测试可能形式化,甚至造成错误的信息。文中重点介绍为 Go 架构撰写单元测试时应该避免的 5 个普遍错误。 zvvq.cn

错误 1:不检测错误 copyright zvvq

实例:1

内容来自samhan

funcSomeFunc(inputint)int{

内容来自zvvq,别采集哟

returninput+ 1 zvvq.cn

} copyright zvvq

正确的方式:1

zvvq好,好zvvq

import"testing" copyright zvvq

funcTestSomeFunc(t*testing.T){

内容来自samhan

ifgot:=SomeFunc(0);got!= 1{ zvvq好,好zvvq

t.Errorf("SomeFunc(0)=%d,want 1",got)

内容来自samhan

} copyright zvvq

} copyright zvvq

错误 2:取决于 DBMS 详情 zvvq好,好zvvq

实例:1

zvvq好,好zvvq

import"database/sql" copyright zvvq

funcGetUsers(db*sql.DB)[]User{

内容来自zvvq,别采集哟

rows,err:=db.Query("SELECT*FROMusers")

内容来自zvvq,别采集哟

iferr!=nil{ copyright zvvq

returnnil

zvvq好,好zvvq

}

zvvq好,好zvvq

//...

内容来自zvvq,别采集哟

正确的方式:1

内容来自zvvq

funcGetUsers(repoUserRepository)[]User{

本文来自zvvq

rows,err:=repo.Query("SELECT*FROMusers")

本文来自zvvq

iferr!=nil{ 内容来自zvvq,别采集哟

returnnil

本文来自zvvq

}

zvvq好,好zvvq

//... zvvq.cn

错误 3:检测 Godoc 文档

内容来自zvvq

单元测试的目的是认证代码的作用,而非测试文档是否正确。确保在单元测试中检测 Godoc 文档中的实例或叙述。

zvvq.cn

错误 4:取决于外界服务

内容来自samhan

实例:1 内容来自zvvq,别采集哟

import"net/http" 内容来自zvvq,别采集哟

funcGetXKCDComic(idint)(*http.Response,error){ 内容来自samhan666

req,err:=http.NewRequest("GET",fmt.Sprintf("https://xkcd.com/%d/info.0.json",id),nil)

内容来自zvvq,别采集哟

iferr!=nil{

zvvq好,好zvvq

returnnil,err zvvq

} 本文来自zvvq

//... 内容来自samhan

正确的方式:1

zvvq

funcGetXKCDComic(repoXKCDRepository,idint)(*http.Response,error){ 本文来自zvvq

req,err:=repo.NewRequest("GET",fmt.Sprintf("https://xkcd.com/%d/info.0.json",id),nil)

copyright zvvq

iferr!=nil{

内容来自samhan666

returnnil,err

内容来自zvvq

} zvvq好,好zvvq

//... copyright zvvq

错误 5:检测过度广泛 zvvq好,好zvvq

实例:1 内容来自samhan666

funcTestSomeFunc(t*testing.T){

zvvq.cn

ifgot:=SomeFunc(-1);got>0{

本文来自zvvq

t.Error("SomeFunc(-1)shouldbenegative") zvvq

}

本文来自zvvq

}

zvvq.cn

正确的方式:1 内容来自zvvq,别采集哟

funcTestSomeFunc(t*testing.T){ copyright zvvq

ifgot:=SomeFunc(-1);got!=-1{ zvvq

t.Errorf("SomeFunc(-1)=%d,want-1",got)

内容来自zvvq

} zvvq

}

本文来自zvvq

以上就是为golang架构撰写单元测试时要防止什么普遍错误?的详细内容,大量请关注其他类似文章!

内容来自samhan