在golang中运行只适用于某些版本的测试

时间:2016-12-23 07:31:46

标签: testing go version

我在这里有一个库(https://github.com/turtlemonvh/altscanner),其中包含一个将自定义扫描程序的功能与bufio.Scanner进行比较的测试。特别是,我将我的方法与the Buffer method进行了比较wasn't added until go1.6

我的实际代码适用于返回1.4的版本,但我想要包含此测试(我也想添加一个基准测试),它使用Buffer函数bufio.Scanner对象。

我怎样才能包含这些使用go1.6 +功能的测试,同时仍允许代码运行go1.4和1.5?

我认为答案是using a build flag只有在明确请求的情况下触发执行这些测试(我才能通过a travis environment variable访问我的CI管道中的go版本)。我也可以在这里滥用the short flag

有更清洁的方法吗?

1 个答案:

答案 0 :(得分:1)

发布此消息后几分钟,我记得build constraints。 Go有一个内置的约束来处理这个确切的情况,即" go的版本必须是> = X"。

将该测试移至a separate file并在顶部添加//+build go1.6修复它。