如何测试Go语言中非main包的库函数?
如何测试Go语言库模块中的函数
不用必须创建新模块,有几种实用的方式可以测试你的库函数:
1. 在当前库模块内添加临时测试入口文件
直接在库的模块目录下创建一个main.go(或命名为test_runner.go这类明确用途的文件名),内容示例如下:
package main import ( "fmt" "your/module/path" // 替换成你的库模块路径,也就是go.mod里的module值 ) func main() { // 调用你要测试的库函数 res := yourmodule.YourToolFunc("test input") fmt.Println("测试结果:", res) }
执行命令:
go run main.go
测试完成后,你可以直接删除这个文件,或者给文件名加上下划线前缀(比如_main.go),Go在构建库时会自动忽略这类文件。
2. 使用Go官方的单元测试框架(推荐)
这是Go语言中测试库代码的标准方式,适合长期维护和自动化测试。在库文件同目录下创建xxx_test.go格式的测试文件,示例:
package yourlib // 和你的库包名一致 import "testing" func TestYourToolFunc(t *testing.T) { // 测试用例1 input := "test input" expected := "expected output" res := YourToolFunc(input) if res != expected { t.Errorf("YourToolFunc(%q) = %q, want %q", input, res, expected) } // 可以添加更多测试用例 }
执行测试命令:
go test # 简单执行测试 go test -v # 查看详细测试过程
3. 在模块内创建cmd子目录存放测试工具
如果需要长期保留测试入口,或者有多个测试场景,可以在模块根目录下创建cmd子目录,比如cmd/testlib,在该目录下放置main.go,结构如下:
yourlib-module/ ├── go.mod ├── yourlib.go └── cmd/ └── testlib/ └── main.go
cmd/testlib/main.go的内容和第一种方式类似,执行测试时用:
go run ./cmd/testlib
这种方式不会污染库的核心代码,同时可以把测试工具作为模块的一部分保留。
内容的提问来源于stack exchange,提问作者pida
相关产品推荐
相关产品推荐

