返回介绍

7.1.1 单元测试

发布于 2024-10-13 01:27:19 字数 5361 浏览 0 评论 0 收藏 0

源代码目录结构

我们在gotest包中创建两个文件,目录结构如下所示:

[GoExpert]
|--[src]
   |--[gotest]
      |--unit.go
      |--unit_test.go

其中unit.go为源代码文件,unit_test.go为测试文件。要保证测试文件以“_test.go”结尾。

源代码文件

源代码文件unit.go中包含一个Add()方法,如下所示:

package gotest

// Add 方法用于演示go test使用
func Add(a int, b int) int {
    return a + b
}

Add()方法仅提供两数加法,实际项目中不可能出现类似的方法,此处仅供单元测试示例。

测试文件

测试文件unit_test.go中包含一个测试方法TestAdd(),如下所示:

package gotest_test

import (
    "testing"
    "gotest"
)

func TestAdd(t *testing.T) {
    var a = 1
    var b = 2
    var expected = 3

    actual := gotest.Add(a, b)
    if actual != expected {
        t.Errorf("Add(%d, %d) = %d; expected: %d", a, b, actual, expected)
    }
}

通过package语句可以看到,测试文件属于“gotest_test”包,测试文件也可以跟源文件在同一个包,但常见的做法是创建一个包专用于测试,这样可以使测试文件和源文件隔离。GO源代码以及其他知名的开源框架通常会创建测试包,而且规则是在原包名上加上"_test"。

测试函数命名规则为"TestXxx",其中“Test”为单元测试的固定开头,go test只会执行以此为开头的方法。紧跟“Test”是以首字母大写的单词,用于识别待测试函数。

测试函数参数并不是必须要使用的,但"testing.T"提供了丰富的方法帮助控制测试流程。

t.Errorf()用于标记测试失败,标记失败还有几个方法,在介绍testing.T结构时再详细介绍。

执行测试

命令行下,使用go test命令即可启动单元测试,如下所示:

E:\OpenSource\GitHub\RainbowMango\GoExpertProgrammingSourceCode\GoExpert\src\gotest>go test
PASS
ok      gotest  0.378s

E:\OpenSource\GitHub\RainbowMango\GoExpertProgrammingSourceCode\GoExpert\src\gotest>

通过打印可知,测试通过,花费时间为0.378s。

总结

从上面可以看出,编写一个单元测试并执行是非常方便的,只需要遵循一定的规则:

  • 测试文件名必须以"_test.go"结尾;
  • 测试函数名必须以“TestXxx”开始;
  • 命令行下使用"go test"即可启动测试;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文