Skip to content

go test测试的注意事项

今天,我在使用 go 语言编写 holiya 编程语言项目的时候,在 token 包编写完成 token 相关的内容之后,编写了测试 token_test.go 文件,我执行以下命令进行测试:

shell
go test

但是报错了:

txt
no Go files in path/to/holiya

这是因为 go test 默认会测试当前目录下的所有 go 文件,但是,holiya 项目的根目录下面没有任何 go 文件,测试文件在token目录里面,所以,go test 找不到任何 go 文件,就会报错。

我问了 AI ,AI 说是要执行以下命令:

shell
go test ./...

最开始的时候,我以为 go test ./... 后面的 ...是多余的,就直接执行了以下命令:

shell
go test ./

结果报错了:

txt
no Go files in path/to/holiya

后来才发现是要执行以下完整的命令:

shell
go test ./...

这样就会测试所有包里面的测试。 如果只想测试固定的包,比如token包,可以使用以下命令:

shell
go test ./token

如果想知道测试了哪些函数,可以加上参数 -v

shell
go test -v ./...
go test -v ./token

测试输出:

txt
=== RUN   TestTokenType
--- PASS: TestTokenType (0.00s)
=== RUN   TestTokenLiteral
--- PASS: TestTokenLiteral (0.00s)
=== RUN   TestLookupIdentifier
--- PASS: TestLookupIdentifier (0.00s)
PASS
ok      holiya/token    (cached)