在Golang中编写单元测试文件 | 青训营笔记

58 阅读2分钟

在 Go 语言中,编写单元测试文件非常简单,只需遵循以下步骤:

在项目目录下创建一个名为 `xxx_test.go` 的测试文件,其中 `xxx` 是要测试的文件名(不带扩展名)。
在测试文件中定义一个名为 `TestXxx()` 的函数,其中 `Xxx` 是要测试的函数名。该函数的签名必须为 `func (t *testing.T)`,并可在其中编写测试逻辑。
使用 testing 包提供的 assert 函数来判断测试结果是否正确。一般情况下,我们会调用 `t.Log()` 函数来输出测试日志,并使用 `t.Errorf()``t.FailNow()` 等函数来标记测试失败。

下面是一个简单的示例,演示如何对一个加法函数进行单元测试:

package main

import "testing"

// 要测试的加法函数

func add(x, y int) int {

return x + y

}

// 测试函数

func TestAdd(t *testing.T) {

// 普通测试

if add(1, 2) != 3 {

t.Errorf("add(1, 2) should be 3")

}

// 子测试

t.Run("test case 1", func(t *testing.T) {

if add(2, 3) != 5 {

t.Errorf("add(2, 3) should be 5")

}

})

t.Run("test case 2", func(t *testing.T) {

if add(3, 4) != 7 {

t.Errorf("add(3, 4) should be 7")

}

})

// 输出测试日志

t.Log("All tests passed.")

}

在上述代码中,我们将要测试的加法函数 add() 定义在文件顶部。然后,在同一个文件中编写了一个名为 TestAdd() 的测试函数,并在其中编写了多个测试用例。其中,我们使用普通测试方式对 add() 函数进行了一次断言,而使用子测试方式在多个子测试中对其进行了进一步的检查。

需要注意的是,测试函数的名称必须以 Test 开头,并且只接受一个 *testing.T 类型的参数。在测试过程中,我们可以使用 t.Log() 函数输出测试日志,也可以使用 t.Errorf()t.FailNow() 等函数标记测试失败。在实际应用中,建议编写简洁、清晰和易于维护的测试代码,并尽可能覆盖代码的各种分支情况和异常情况。