第十三章修改 (#837)

Co-authored-by: Joe Chen <jc@unknwon.io>
This commit is contained in:
Haigang Zhou
2022-05-13 19:20:09 +08:00
committed by GitHub
parent d29644465a
commit 92d91dfa1c
11 changed files with 70 additions and 70 deletions

View File

@@ -12,7 +12,7 @@
`_test` 程序不会被普通的 Go 编译器编译,所以当放应用部署到生产环境时它们不会被部署;只有 gotest 会编译所有的程序:普通程序和测试程序。
测试文件中必须导入 "testing" 包,并写一些名字以 `TestZzz` 打头的全局函数,这里的 `Zzz` 是被测试函数的字母描述,如 TestFmtInterfaceTestPayEmployees 等。
测试文件中必须导入 `"testing"` 包,并写一些名字以 `TestZzz` 打头的全局函数,这里的 `Zzz` 是被测试函数的字母描述,如 `TestFmtInterface()``TestPayEmployees()` 等。
测试函数必须有这种形式的头部:
@@ -20,7 +20,7 @@
func TestAbcde(t *testing.T)
```
T 是传给测试函数的结构类型,用来管理测试状态,支持格式化测试日志,如 t.Logt.Errort.ErrorF 等。在函数的结尾把输出跟想要的结果对比,如果不等就打印一个错误,成功的测试则直接返回。
`T` 是传给测试函数的结构类型,用来管理测试状态,支持格式化测试日志,如 `t.Log``t.Error``t.ErrorF` 等。在函数的结尾把输出跟想要的结果对比,如果不等就打印一个错误,成功的测试则直接返回。
用下面这些函数来通知测试失败:
@@ -40,11 +40,11 @@ T 是传给测试函数的结构类型,用来管理测试状态,支持格式
结合 先执行 3然后执行 2的效果。
运行 go test 来编译测试程序,并执行程序中所有的 TestZZZ 函数。如果所有的测试都通过会打印出 PASS。
运行 go test 来编译测试程序,并执行程序中所有的 `TestZZZ` 函数。如果所有的测试都通过会打印出 `PASS`
gotest 可以接收一个或多个函数程序作为参数,并指定一些选项。
结合 --chatty 或 -v 选项,每个执行的测试函数以及测试状态会被打印。
结合 `--chatty``-v` 选项,每个执行的测试函数以及测试状态会被打印。
例如:
@@ -57,7 +57,7 @@ go test fmt_test.go --chatty
...
```
testing 包中有一些类型和函数可以用来做简单的基准测试;测试代码中必须包含以 `BenchmarkZzz` 打头的函数并接收一个 `*testing.B` 类型的参数,比如:
`testing` 包中有一些类型和函数可以用来做简单的基准测试;测试代码中必须包含以 `BenchmarkZzz` 打头的函数并接收一个 `*testing.B` 类型的参数,比如:
```go
func BenchmarkReverse(b *testing.B) {
@@ -65,7 +65,7 @@ func BenchmarkReverse(b *testing.B) {
}
```
命令 ```go test test.bench=.*``` 会运行所有的基准测试函数;代码中的函数会被调用 N 次N 是非常大的数,如 N = 1000000并展示 N 的值和函数执行的平均时间,单位为 ns纳秒ns/op。如果是用 testing.Benchmark 调用这些函数,直接运行程序即可。
命令 ```go test test.bench=.*``` 会运行所有的基准测试函数;代码中的函数会被调用 `N` 次(`N` 是非常大的数,如 `N = 1000000`),并展示 `N` 的值和函数执行的平均时间,单位为 ns纳秒ns/op。如果是用 `testing.Benchmark()` 调用这些函数,直接运行程序即可。
具体可以参见 [14.16 节](14.16.md) 中用 goroutines 运行基准测试的例子以及练习 13.4[string_reverse_test.go](exercises/chapter_13/string_reverse_test.go)