我要运行一些测试用例,因此需要启动GRPC模拟服务器。我为此使用gomock
库。要启动服务器,我必须将类型为testing.T
的变量传递给该函数-gomock.NewController()
。由于这是所有测试用例的一种初始化,因此我想在TestMain
中进行此操作。但是TestMain
只能访问testing.M
,那么该如何处理?在testing.T
中创建新的TestMain
结构?能行吗?
答案 0 :(得分:1)
听起来您正在寻找BeforeEach
模式。您无权访问testing.T
中的TestMain
对象,因为这是在测试套件运行之前和之后进行初始化的更多地方。
有一些框架可以让您便宜BeforeEach
:
仅举几例。
您也可以自己动手:
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)
// ...
}