Go 在TestMain中使用testing.T
我想运行几个测试用例,需要启动GRPC模拟服务器。我正在为此使用Go 在TestMain中使用testing.T,go,grpc,gomock,Go,Grpc,Gomock,我想运行几个测试用例,需要启动GRPC模拟服务器。我正在为此使用gomock库。要启动服务器,我必须将类型为testing.T的变量传递给此函数-。因为这是对所有测试用例的一种初始化,所以我想在TestMain中进行初始化。但是TestMain只能访问testing.M,那么我该如何处理这种情况呢?在TestMain中创建新的testing.T结构?这行得通吗?听起来你好像在每个模式之前寻找一个。您无权访问TestMain中的testing.t对象,因为这更像是在测试套件运行前后进行初始化的地方
gomock
库。要启动服务器,我必须将类型为testing.T
的变量传递给此函数-。因为这是对所有测试用例的一种初始化,所以我想在TestMain
中进行初始化。但是TestMain
只能访问testing.M
,那么我该如何处理这种情况呢?在TestMain
中创建新的testing.T
结构?这行得通吗?听起来你好像在每个模式之前寻找一个。您无权访问TestMain
中的testing.t
对象,因为这更像是在测试套件运行前后进行初始化的地方
有一些框架可以在每次使用之前为您提供廉价的:
举几个例子
您也可以自己动手滚动:
type test struct{
ctrl *gomock.Controller
mockFoo *MockFoo
// ...
}
func beforeEach(t *testing.T) test {
ctrl := gomock.NewController(t)
return test {
ctrl:ctrl,
mockFoo: NewMockFoo(ctrl),
}
}
func TestBar(t *testing.T) {
test := beforeEach(t)
// ...
}
func TestBaz(t *testing.T) {
test := beforeEach(t)
// ...
}
由于TestReporter只是一个接口,您可以尝试创建自己的接口:无法创建testing.t实例,因为所有字段都没有导出。忘记TestMain,在每个测试中分别启动服务器。这是一般的最佳实践。请提供一些主要函数的代码示例。我肯定你里面有太多东西了。对主函数进行一点重构之后,测试就会容易得多。