如何从Go中排除Mock或Stub结构

时间:2018-07-29 18:07:32

标签: unit-testing go

假设一下,我有一个带有许多接口的Go包。对于此示例,我将重点介绍Middleware中定义的名为middleware.go的一个:

type Middleware interface {
  // some functions
}  

我还有其他使用它的系统部分,因此,为了更好地帮助测试系统的那些部分,我在mock_middleware.go中手动创建了一个模拟实现:

type MockMiddleware struct {

}  

// implementations

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

1 个答案:

答案 0 :(得分:2)

一种方法是使用Build Constraints

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

  

要避免考虑将文件用于构建:

     

// +构建忽略