首页 > 后端开发 > Golang > 正文

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

PHPz
发布: 2024-07-13 10:21:02
原创
689人浏览过

为 go 框架编写单元测试时应避免的常见错误:不测试错误依赖于 dbms 详情测试 godoc 文档依赖于外部服务测试过于宽泛

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

为 Go 框架编写单元测试时应避免的常见错误

单元测试在维护可扩展、稳定和可靠的 Go 框架方面至关重要。然而,如果没有遵循最佳实践,单元测试可能会流于形式,甚至导致错误的信息。本文重点介绍为 Go 框架编写单元测试时应该避免的 5 个常见错误。

错误 1:不测试错误

立即学习go语言免费学习笔记(深入)”;

  • 示例:
func SomeFunc(input int) int {
  return input + 1
}
登录后复制
  • 正确的方法:
import "testing"

func TestSomeFunc(t *testing.T) {
  if got := SomeFunc(0); got != 1 {
    t.Errorf("SomeFunc(0) = %d, want 1", got)
  }
}
登录后复制

错误 2:依赖于 DBMS 详情

md2card
md2card

Markdown转知识卡片

md2card 1995
查看详情 md2card
  • 示例:
import "database/sql"

func GetUsers(db *sql.DB) []User {
  rows, err := db.Query("SELECT * FROM users")
  if err != nil {
    return nil
  }
  // ...
登录后复制
  • 正确的方法:
func GetUsers(repo UserRepository) []User {
  rows, err := repo.Query("SELECT * FROM users")
  if err != nil {
    return nil
  }
  // ...
登录后复制

错误 3:测试 Godoc 文档

单元测试的目的是验证代码的功能,而不是测试文档是否准确。避免在单元测试中测试 Godoc 文档中的示例或描述。

错误 4:依赖于外部服务

  • 示例:
import "net/http"

func GetXKCDComic(id int) (*http.Response, error) {
  req, err := http.NewRequest("GET", fmt.Sprintf("https://xkcd.com/%d/info.0.json", id), nil)
  if err != nil {
    return nil, err
  }
  // ...
登录后复制
  • 正确的方法:
func GetXKCDComic(repo XKCDRepository, id int) (*http.Response, error) {
  req, err := repo.NewRequest("GET", fmt.Sprintf("https://xkcd.com/%d/info.0.json", id), nil)
  if err != nil {
    return nil, err
  }
  // ...
登录后复制

错误 5:测试过于宽泛

  • 示例:
func TestSomeFunc(t *testing.T) {
  if got := SomeFunc(-1); got > 0 {
    t.Error("SomeFunc(-1) should be negative")
  }
}
登录后复制
  • 正确的方法:
func TestSomeFunc(t *testing.T) {
  if got := SomeFunc(-1); got != -1 {
    t.Errorf("SomeFunc(-1) = %d, want -1", got)
  }
}
登录后复制

以上就是为 golang 框架编写单元测试时应避免哪些常见错误?的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号