go测试失败"无法加载包构建约束,排除所有Go文件"

时间:2017-11-28 17:17:54

标签: go

当我运行此命令时

go test -tags integration $(go list ./... | grep -v /vendor/)

对于所有包含// +build !integration

标记的测试的软件包,都会失败
can't load package: build constraints exclude all Go files

在这种情况下,有没有办法让go test忽略这些包,而不是失败?感谢

3 个答案:

答案 0 :(得分:7)

如果所有包中的文件被构建约束排除,而不仅仅是测试文件,则只会出现该错误。如果这是你想要的,只需添加一个没有代码的包文件,仍然可以加载包。例如,许多软件包将其软件包级文档放在一个单独的文件中,您可以使用该文件始终拥有一个有效的软件包:

// Package foo does foo
package foo

答案 1 :(得分:0)

无论值多少钱:构建代码时,我都遇到类似的错误。在我的情况下,我的主文件在其顶部具有// + build go1.13,并且我试图使用go1.12.x构建该文件。删除+ build go1.13可解决此问题。

答案 2 :(得分:0)

您正在导入的包可能包含一些带有条件复杂性标志的源文件,您可以在文件顶部找到该指令,例如:

//+build linux darwin windows
package main

import "fmt"

func main() {
    fmt.Println("hello")
}

+build 指令后跟一个或多个平台指示应该在何处编译此源代码。

因此,您可以简单地尝试删除此指令来解决故障。 它对我有用。