在 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() 等函数标记测试失败。在实际应用中,建议编写简洁、清晰和易于维护的测试代码,并尽可能覆盖代码的各种分支情况和异常情况。