转到特定操作系统或体系结构的测试文件

时间:2015-02-07 21:05:15

标签: testing go

在Go中,文件名具有语义含义。例如:

*_windows.go // Only include in compilations for Windows
*_unix.go    // Only include in compilations for Unix
*_386.go     // Only include in compilations for 386 systems
*_test.go    // Only include when run with `go test`

但是,我似乎无法让以下工作:

*_windows_test.go // Only include when running `go test` on windows
*_test_windows.go // Another attempt

Go甚至可以实现吗?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:2)

只需在测试文件上使用build constraint即可。

// +build windows
  

构建约束被评估为空格分隔选项的OR;每个选项评估为逗号分隔术语的AND;并且每个术语都是一个字母数字,或者在其前面是!,否定。也就是说,构建约束:

答案 1 :(得分:2)

原来我错了。它确实有效。问题是我还有一个名为foo_unix_test.go的文件,显然Go不支持*_unix.go语法作为特例。