2 回答
TA贡献1946条经验 获得超3个赞
该go test ./...命令在后台为每个包编译一个测试二进制文件并一个接一个地运行它们。cannot use -o flag with multiple packages如果您尝试指定输出,这也是您收到错误的原因。这就是主包中的代码不会影响子包的原因。
因此,使其工作的唯一方法是将所有设置逻辑放入某种“设置”包中,并从所有子包中调用共享代码(我知道还有很多工作)。
TA贡献1796条经验 获得超4个赞
为了避免代码重复,我使用了一个函数来进行设置/拆卸并评估一个函数作为测试。
该函数应如下所示
func WithTestSetup(t *testing.T, testFunction func()) {
// setup code
testFunction()
// teardown code
}
我使用该t *testing.T参数来报告设置或拆卸中的错误,但可以省略。
然后在您的测试中,您可以:
func TestFoo(t *testing.T) {
WithTestSetup(
t, func() {
if err := Foo(); err != nil {
t.Fatal(err)
}
},
)
}
如果需要,只需调用WithTestSetup,对我来说看起来比在项目中添加一堆TestMains 更容易。
- 2 回答
- 0 关注
- 157 浏览
添加回答
举报
