【发布时间】:2018-07-29 18:07:32
【问题描述】:
假设我有一个带有许多接口的 Go 包。对于此示例,我将重点关注 Middleware 中定义的 middleware.go:
type Middleware interface {
// some functions
}
我有一些系统的其他部分使用它,所以为了更好地帮助测试系统的这些部分,我在mock_middleware.go 中手动创建了一个模拟实现:
type MockMiddleware struct {
}
// implementations
在没有测试的情况下构建二进制文件时,如何将模拟类排除在二进制文件中?我知道middleware_test.go 将被排除在外,但我不想用该约定命名我的所有模拟,以免将实际测试与支持测试的实现混淆。
【问题讨论】:
-
AFAIK,Go 的编译器消除了死代码。因此,如果您的模拟类型仅用于测试,则可能已经从最终二进制文件中排除。此外,可能重复stackoverflow.com/a/42827979/965900
-
这是一个公平的观点。我在浪费时间编译它,但是对于我的项目规模来说并不算太大。我想当您的应用程序变得相当大(例如 100,000 行代码)时,这将是一个问题。
标签: unit-testing go