首页 > 解决方案 > 如何将 Mock 或 Stub 结构排除在 Go 中构建

问题描述

假设我有一个带有许多接口的 Go 包。对于此示例,我将重点关注一个名为Middlewaredefined in 的示例middleware.go

type Middleware interface {
  // some functions
}  

我有一些系统的其他部分使用它,所以为了更好地帮助测试系统的这些部分,我手动创建了一个模拟实现mock_middleware.go

type MockMiddleware struct {

}  

// implementations

在没有测试的情况下构建二进制文件时,如何将模拟类排除在二进制文件中?我知道这middleware_test.go将被排除在外,但我不想用该约定命名我的所有模拟,以免将实际测试与支持测试的实现混淆。

标签: unit-testinggo

解决方案


一种方法是使用Build Constraints

Go 甚至支持内置ignore标签,但我不确定它与测试/基准工具链的交互:

要使文件不被考虑用于构建:

// +构建忽略


推荐阅读