在编写测试用例时,我发现了两个问题:
共有3个测试文件,其中one_test.go
和two_test.go
可以添加到server_suites_test.go
中,并且运行良好。但是three_point_one_test.go
的功能无法添加到server_suites_test.go
中,因为无法导入_test.go
。
one_test.go
和two_test.go
使用由server_test.go
创建的gRPC客户端对象。实际上,server_test.go
创建了一个gRPC服务器和一个客户端,其他测试用例都使用了该客户端。当前three_point_one_test.go
无法访问该客户端。因此,为解决此问题,每次运行此测试时,我都会创建一个客户端。
项目结构(BTW不完整!)
> tree /f
Folder PATH listing for volume Windows
Volume serial number is 1C92-17A5
C:.
└───data
│ one.go
│ one_test.go
│ two.go
│ two_test.go
│ server.go
│ server_suites_test.go
│ server_test.go
│
└───three
three_point_one.go
three_point_one_test.go
server_suites_test.go
package data
import (
"testing"
"someproj/three"
)
func TesOne(t *testing.T) {
t.Run("One", testOne) //from one_test.go
}
func TestTwo(t *testing.T) {
t.Run("Two", testTwo) //from two_test.go
}
// Below code cannot be compiled -START
func TestThreePointOne(t *testing.T) {
t.Run("ThreePointOne", three.TestThreePointOne) //cannot import this function
}
// Below code cannot be compiled -END
是否可以将子包中存在的其他测试添加到测试套件中?
答案 0 :(得分:1)
是否可以将子包中存在的其他测试添加到测试套件中?
否。
测试不是软件包的一部分。由于您只能导入整个程序包,而测试不属于其中一部分,因此您根本无法执行。不要再考虑“子程序包”了:没有这样的事情。所有软件包都是相同的,并且它们的文件系统位置无关紧要(内部软件包和供应商除外)。