我有一个Go 1.14项目,具有以下目录结构:
myapp/
server/
payments/
capture_payment.go
capture_payment_test.go
billing/
billing.go
billing_test.go
fulfillment/
fulfillment.go
fulfillment_test.go
在我的billing.go
文件中,我有:
package billing
import (
"fmt"
)
func Flim() {
fmt.Println("FLIM")
}
在我的fulfillment_test.go
文件中,我有:
package fulfillment
import (
"fmt"
)
func Flam() {
fmt.Println("FLAM")
}
在我的capture_payment_test.go
文件中,我有:
package payments
import (
"testing"
"github.com/myorg/myapp/billing"
"github.com/myorg/myapp/fulfillment"
)
func TestSomething(t *testing.T) {
billing.Flim()
fulfillment.Flam()
}
当我cd
进入server/payments
并运行go test
时,出现以下错误:
$ go test
# github.com/myorg/myapp/server/payments [github.com/myorg/myapp/server/payment.test]
./capture_payment_test.go:12:2: undefined: fulfillment.Flam
FAIL github.com/myorg/myapp/server/payments [build failed]
谁能发现为什么 fulfillment.Flam()
不确定,但是billing.Flim()
很好吗?
答案 0 :(得分:4)
在testing package的概述中对此进行了解释:
要编写新的测试套件,请创建一个名称以_test.go ...结尾的文件。 将文件与要测试的文件放在同一软件包中。文件 将从常规软件包构建中排除...
这意味着Flam()
将不属于fulfillment
软件包,并且不能在其他软件包中使用。如果要让其他软件包使用测试实用程序,则需要将它们放在常规*.go
文件中,而不要放在*_test.go
文件中。