戈朗测试:"no test files"



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

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

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

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

从如何编写 Go 代码:

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

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

例如

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

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

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

go test -v ./...

或者如果你使用govendor

govendor test +local

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

go test -v ./packagename

或者递归测试包

go test -v ./packagename/...

_test文件中的测试函数必须以前缀"Test"开头

好:

func TestName (

坏:

func NameTest (

此函数不会作为测试和结果执行,并报告错误

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

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

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

以下问题的终端演示:

testing文件夹名称:

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

不带testing文件夹名称:

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

就我而言,这很有帮助

我遇到了同样的问题。我通过附加各种包来修复它们

go test -v ././2ndpackage ./3rdpackage ./4thpackages

这解决了问题。

我还在测试关键字和函数名称之间添加了"_"Test_FuncName

>no test files意味着您需要重命名测试文件以反映要测试的文件。主去main_test.go

其中 main.go 是包含代码的文件。 main_test.go 是包含测试代码的文件。

我也会出现这个问题。当我删除func TestMain(t *testing.T)时,它工作正常!

最新更新