Skip to content

Commit 8096f44

Browse files
committed
fix & style: update 09.4.md and 09.5.md
* fix some typos * optimize presentation
1 parent 1f9913c commit 8096f44

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

chapter09/09.4.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# testing - 运行并验证示例 #
22

3-
testing 包除了测试,还提供了运行并验证示例的功能。示例,一方面是文档的效果,是关于某个功能的使用例子;另一方面,可以被当做测试运行。
3+
`testing` 包除了测试,还提供了运行并验证示例的功能。示例,一方面是文档的效果,是关于某个功能的使用例子;另一方面,可以被当做测试运行。
44

55
一个示例的例子如下:
66

@@ -20,11 +20,11 @@ want:
2020
hello
2121
```
2222

23-
一个示例函数以 Example 开头,如果示例函数包含以 "Output" 开头的行注释,在运行测试时,go 会将示例函数的输出和 "Output" 注释中的值做比较,就如上面的例子。
23+
一个示例函数以 Example 开头,如果示例函数包含以 "Output:" 开头的行注释,在运行测试时,go 会将示例函数的输出和 "Output:" 注释中的值做比较,就如上面的例子。
2424

25-
有时候,输出顺序可能不确定,比如循环输出 map 的值,那么可以使用 "Unordered output" 开头的注释。
25+
有时候,输出顺序可能不确定,比如循环输出 map 的值,那么可以使用 "Unordered output:" 开头的注释。
2626

27-
如果示例函数没有 "Output" 注释,该示例函数只会被编译而不会被运行。
27+
如果示例函数没有上述输出注释,该示例函数只会被编译而不会被运行。
2828

2929
## 命名约定
3030

@@ -49,7 +49,7 @@ func ExampleT_M_suffix() { ... }
4949

5050
本节开头提到了示例的两个作用,它们分别是由 `godoc``go test` 这两个命令实现的。
5151

52-
在执行 `go test` 时,会运行示例。具体的实现原理,可以通过阅读 `go test` 命令源码和 testing 包中 `example.go` 文件了解。
52+
在执行 `go test` 时,会运行示例。具体的实现原理,可以通过阅读 `go test` 命令源码和 `testing` 包中 `example.go` 文件了解。
5353

5454
# 导航 #
5555

chapter09/09.5.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
## TestMain
44

5-
在写测试时,有时需要在测试之前或之后进行额外的设置(setup)或拆卸(teardown);有时,测试还需要控制在主线程上运行的代码。为了支持这些需求,testing 提供了 TestMain 函数 :
5+
在写测试时,有时需要在测试之前或之后进行额外的设置(setup)或拆卸(teardown);有时,测试还需要控制在主线程上运行的代码。为了支持这些需求,`testing` 包提供了 `TestMain` 函数 :
66

77
func TestMain(m *testing.M)
88

9-
如果测试文件中包含该函数,那么生成的测试将调用 TestMain(m),而不是直接运行测试。TestMain 运行在主 goroutine 中 , 可以在调用 m.Run 前后做任何设置和拆卸。注意,在 TestMain 函数的最后,应该使用 m.Run 的返回值作为参数调用 os.Exit。
9+
如果测试文件中包含该函数,那么生成的测试将调用 `TestMain(m)`,而不是直接运行测试。`TestMain` 运行在主 goroutine 中 , 可以在调用 `m.Run` 前后做任何设置和拆卸。注意,在 `TestMain` 函数的最后,应该使用 `m.Run` 的返回值作为参数去调用 `os.Exit`
1010

11-
另外,在调用 TestMain 时 , flag.Parse 并没有被调用。所以,如果 TestMain 依赖于 command-line 标志 ( 包括 testing 包的标记 ), 则应该显示的调用 flag.Parse。注意,这里说的依赖,说的是如果 TestMain 函数内依赖 flag,则必须显示调用 flag.Parse,否则不需要,因为 m.Run 中调用 flag.Parse。
11+
另外,在调用 `TestMain` 时 , `flag.Parse` 并没有被调用。所以,如果 `TestMain` 依赖于 command-line 标志包括 `testing` 包的标志),则应该显式地调用 `flag.Parse`。注意,这里的依赖是指,若 `TestMain` 函数内需要用到 command-line 标志,则必须显式地调用 `flag.Parse`,否则不需要,因为 `m.Run` 中调用 `flag.Parse`
1212

13-
一个包含 TestMain 的例子如下:
13+
一个包含 `TestMain` 的例子如下:
1414

1515
```go
1616
package mytestmain
@@ -46,13 +46,13 @@ func TestDatabase(t *testing.T) {
4646
}
4747
```
4848

49-
`Run` 感兴趣的可以阅读源码,了解其原理。
49+
`m.Run` 感兴趣的可以阅读源码,了解其原理。
5050

5151
## Test Coverage
5252

5353
测试覆盖率,这里讨论的是基于代码的测试覆盖率。
5454

55-
Go 从 1.2 开始,引入了测试覆盖率的支持,使用的是 cover 相关的工具(`go test -cover``go tool cover`)。虽然 `testing` 包提供了 cover 相关函数,不过它们是给 cover 的工具使用的。
55+
Go 从 1.2 开始,引入了对测试覆盖率的支持,使用的是与 cover 相关的工具(`go test -cover``go tool cover`)。虽然 `testing` 包提供了 cover 相关函数,不过它们是给 cover 的工具使用的。
5656

5757
关于测试覆盖率的更多信息,可以参考官方的博文:[The cover story](https://blog.golang.org/cover)
5858

0 commit comments

Comments
 (0)