Golang testing: "no test files"

我正在我的包目录中创建一个简单的测试,名为 overseTest.go

package main


import "testing"


func TestReverse(t *testing.T) {
cases := []struct {
in, want string
}{
{"Hello, world", "dlrow ,olleH"},
{"Hello, 世界", "界世 ,olleH"},
{"", ""},
}


for _, c := range cases {
got := Reverse(c.in)
if got != c.want {
t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)
}
}
}

每当我尝试运行它的输出是

exampleFolder[no test files]

这是我的手环

GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/juan/go"
GORACE=""
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CXX="g++"
CGO_ENABLED="1"

任何帮助都将不胜感激。谢谢! !

87346 次浏览

包含测试的文件应该称为 name_test,后缀为 _test。它们应该与正在测试的代码放在一起。

要递归地运行测试,请调用 go test -v ./...

来自 如何编写 Go 代码:

通过创建一个名称以 _test.go结尾的文件来编写一个测试,该文件包含具有 func (t *testing.T)签名的名为 TestXXX的函数。测试框架运行每个这样的函数; 如果该函数调用一个失败函数(如 t.Errort.Fail) ,则认为该测试失败。

您可能在根包中没有任何测试文件,并且运行 go test -v不测试子包,只测试根包。

比如说

.
├── Dockerfile
├── Makefile
├── README.md
├── auth/
│   ├── jwt.go
│   ├── jwt_test.go
├── main.go

如您所见,根包中没有测试文件,只有 main.go 文件。您将得到“无测试文件”

解决方案是递归地测试当前工作目录内的所有软件包

go test -v ./...

或者如果你使用 州长

govendor test +local

或者您可以指定要测试的包(目录)

go test -v ./packagename

或者递归地测试包

go test -v ./packagename/...

您的 _ Test 文件中的 Test 函数必须以前缀“ Test”开头

好:

func TestName (

坏消息:

func NameTest (

这个函数将不会作为测试执行,并且会导致报告的错误

I faced same problem. 除了以前的答案我发现一个问题时,不可能运行测试,如果您的软件包的文件夹名称是 testing

最终演示如下:

具有 testing文件夹名称:

~/go/src/testing$ go test
?       testing [no test files]

without testing folder name:

~/go/src/testing_someothername$ go test
PASS
ok      testing_someothername   0.089s

In my case it was helpful

我遇到了同样的问题,我通过附加不同的包来修复它们

去 test-v././2ndpackage./3rdpackage./4thpackage

这就解决了问题。

Also I added "_" between Test keyword and function name Test _ FuncName

要运行所有测试,请使用以下命令

> go test ./...
//For verbose output use -v flag
> go test -v ./...

no test files意味着您需要重命名您的测试文件以反映您想要测试的文件。 例子 总部,开始 Main _ test. go

Go 是包含代码的文件. main _ test. go 是包含测试代码的文件。