小伙伴们有没有觉得学习golang很有意思?有意思就对了!今天就给大家带来《是否可以从另一个文件调用测试函数来开始测试》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到
小伙伴们有没有觉得学习golang很有意思?有意思就对了!今天就给大家带来《是否可以从另一个文件调用测试函数来开始测试》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!
问题内容是否可以从非测试 Go 文件中调用测试函数来开始执行测试?
例如,我有一个测试函数:
package api
import "testing"
func testapi(t *testing.t) {
...
}
我需要从非测试 go 文件中调用它。
package main
import "../API"
API.TestAPI()
我可以这样做吗?
go 中有一些很棒的测试模式。不幸的是,您尝试测试的方法行不通。
您的单元测试应使用命令 go test <pkg
运行。永远不应该从代码本身调用测试。
go 中的单元测试通常有两种主要形式 - 黑盒单元测试和白盒单元测试。
如果我有一个包 example
,我想测试它。有一个简单的导出函数,可以对所提供的数字列表进行求和。还有一个由 sum
函数使用的未导出实用函数。
example.go
package example
func sum(nums ...int) int {
sum := 0
for _, num := range nums {
sum = add(sum, num)
}
return sum
}
func add(a, b int) int {
return a + b
}
example_test.go:黑盒测试
请注意,我正在测试 example
包,但测试位于 example_test
包中。添加 _test
可以让 go 编译器满意,并让它知道这是 example
的测试包。在这里,我们只能访问导出的变量和函数,这让我们可以测试外部包在导入和使用我们的 example
包时将经历的行为。
package example_test
import (
"testing"
"example"
)
func testsum(t *testing.t) {
tests := []struct {
nums []int
sum int
}{
{nums: []int{1, 2, 3}, sum: 6},
{nums: []int{2, 3, 4}, sum: 9},
}
for _, test := range tests {
s := example.sum(test.nums...)
if s != test.sum {
t.failnow()
}
}
}
example_internal_test.go:白盒测试
请注意,我正在测试 example
包,并且该测试也位于 example
包中。这允许单元测试访问未导出的变量和函数。
package example
import "testing"
func TestAdd(t *testing.T) {
tests := []struct {
a int
b int
sum int
}{
{a: 1, b: 2, sum: 3},
{a: 3, b: 4, sum: 7},
}
for _, test := range tests {
s := add(test.a, test.b)
if s != test.sum {
t.FailNow()
}
}
}
我希望您能够更好地了解 go 的测试框架是如何设置和使用的。为了简单起见,我没有在示例中使用任何外部库,尽管 GitHub.com/stretchr/testify 是一个非常流行且功能强大的有助于单元测试的包。
好了,本文到此结束,带大家了解了《是否可以从另一个文件调用测试函数来开始测试》,希望本文对你有所帮助!关注编程网公众号,给大家分享更多Golang知识!
--结束END--
本文标题: 是否可以从另一个文件调用测试函数来开始测试
本文链接: https://www.lsjlt.com/news/596157.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0