如何测试Golang中的库函数

wgmfuz8q  于 2023-01-15  发布在  Go
关注(0)|答案(2)|浏览(178)

我正在学习围棋,所以我写了一些基本的实用程序和库,我可以在其他模块中重用。
当在另一个模块中导入它们时(例如使用go get),我可以很好地使用它们。
据我所知,Go语言在运行一个go应用程序/模块时,会寻找一个包main和一个main函数来确定入口点。
问题是这些库不在"package main"中,不在main.go中,也没有main函数,那么我应该如何使用cli和go run .来测试我的函数的行为呢?
我是否一定要在package main中创建另一个包含main.go文件的模块?还是需要创建一个测试文件并使用go test
谢谢大家!

3htmauhk

3htmauhk1#

非主包(即库包)不可运行。
要运行它们中的代码,你必须运行一个主包来导入和运行它们的代码,或者在_test.go文件中编写测试函数来运行代码。你可以在它们里面写任何你想写的东西,而且它们通常比创建一个新的主包来测试要容易。
现代IDE现在允许你在调试模式下轻松地运行单个测试,这样你就可以单步调试你的代码,看看它是否按照你期望的方式工作。如果你更喜欢打印调试和从命令行做任何事情,你仍然可以运行单个测试,并看到如下所示的打印输出:

// something_test.go
package mylibrary

func TestSomeFunction(t *testing.T) {
    SomeFunction()
}
go test mylibrary -v -run TestSomeFunction
qv7cva1a

qv7cva1a2#

Go语言测试是测试Go语言代码的首选方法。
如果出于某种原因不想使用go test,则使用build constraints和go run命令从与软件包相同的目录中执行主程序。
下面是一个带有构建约束的示例程序。将文件放在与包源文件相同的目录中。注解//go:build ignore是一个构建约束,它将文件从包源文件中排除。

//go:build ignore

package main

import (
    "your/package/import/path"  // <-- modify to your path
    "fmt"
)

func main() {
     // do something with your package here.
     fmt.Println("example")
}

假设上面的文件名为program.go,使用以下命令从包目录运行程序:

go run program.go

go run命令对于运行类似这样的玩具或测试程序是可以的。对于其他任何东西,首选go build命令。

相关问题