一、 go test

go test命令会遍历所有的*_test.go文件中符合上述命名规则的函数,然后生成一个临时的main包用于调用相应的测试函数,然后构建并运行、报告测试结果,最后清理测试中生成的临时文件。

二、 测试函数

  1. 函数原型
    func TestName(t *testing.T) {
    // ...
    }

    // 1> 测试函数的名字必须以Test开头,可选的后缀名必须以大写字母开头 
  1. 每个测试函数必须导入 testing 包
    package word
    import "testing"
    func TestPalindrome(t *testing.T) {
        if !IsPalindrome("detartrated") {
            t.Error(`IsPalindrome("detartrated") = false`)
        }
        if !IsPalindrome("kayak") {
            t.Error(`IsPalindrome("kayak") = false`)
        }
    }
    func TestNonPalindrome(t *testing.T) {
        if IsPalindrome("palindrome") {
            t.Error(`IsPalindrome("palindrome") = true`)
        }
    }
  1. 测试命令

go test 用来执行测试用例 go test -v 显示每个函数的执行时间 go test -v -run=“函数1|函数2” , -run 对应一个正则表达式,只有测试函数名被它正确匹配的测试函数才会被 go test 测 试命令运行

  1. 测试一个命令

可以测试 main 包中的函数,在执行 go test 时会忽略 main 函数

  1. 白盒测试

黑盒测试只需要测试包公开的文档和API行为,内部实现对测试代码是透明的。相反,白盒测试有访问包内部函数和数据结构的权限,因此可以做到一下普通客户端无法实现的测试。

黑盒和白盒这两种测试方法是互补的。黑盒测试一般更健壮,随着软件实现的完善测试代码很少需要更新。它们可以帮助测试者了解真是客户的需求,也可以帮助发现API设计的一些不足之处。相反,白盒测试则可以对内部一些棘手的实现提供更多的测试覆盖。

三、 测试覆盖率

四、 基准测试

五、 剖析

六、 示例函数