Golang测试:"没有测试文件"

时间:2015-01-30 16:37:56

标签: testing go terminal

我正在我的包目录中创建一个名为reverseTest.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"

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

4 个答案:

答案 0 :(得分:42)

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

例如

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

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

解决方案是运行

go test -v ./...

或者如果您使用govendor

govendor test +local

答案 1 :(得分:34)

包含测试的文件应调用name_test,后缀为_test。来自How to Write Go Code

  

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

答案 2 :(得分:6)

_test文件中的测试功能必须以前缀“Test”

开头

GOOD:

func TestName (

坏:

func NameTest (

此功能不会作为测试执行,并会导致报告错误

答案 3 :(得分:0)

我遇到了同样的问题。 除了先前的答案,如果您的软件包的文件夹名称为testing,我将发现一个无法运行测试的问题。

以下问题的终端演示:

,文件夹名为testing

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

没有testing文件夹名称:

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

对我而言,这很有帮助