Golang测试:“没有测试文件”

kzmpq1sx  于 2022-12-07  发布在  Go
关注(0)|答案(7)|浏览(421)

我在包目录中创建了一个简单的测试,名为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"

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

8dtrkrch

8dtrkrch1#

包含测试的文件应命名为name_test,后缀为_test。它们应位于正在测试的代码旁边。
要递归运行测试,请调用go test -v ./...
如何编写Go代码:
您可以通过创建一个以_test.go结尾的文件来编写测试,该文件包含名为TestXXX且签名为func (t *testing.T)的函数。如果该函数调用了诸如t.Errort.Fail之类的失败函数,则认为该测试失败。

nbewdwxp

nbewdwxp2#

根包中可能没有任何测试文件,运行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/...
wmomyfyw

wmomyfyw3#

your _test文件中的测试函数必须以前缀“Test”开头
良好:

func TestName (

坏消息:

func NameTest (
  • 此函数将不作为测试执行,并产生报告的错误 *
rdrgkggo

rdrgkggo4#

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

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

o7jaxewo5#

我遇到了同样的问题。除了以前的答案,我发现一个问题时,不可能运行测试,如果你的包的文件夹名称是testing
终端演示的问题如下:

使用testing文件夹名称:

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

没有testing文件夹名称:

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

对我来说,这很有帮助

xdyibdwo

xdyibdwo6#

我遇到了同样问题,我通过附加各种包来修复它们
执行测试-v ./ ./第2个包./第3个包./第4个包
这就解决了问题。
我还在Test关键字和函数名Test_FuncName之间添加了“_”

7kqas0il

7kqas0il7#

no test files表示您需要重命名测试文件以反映要测试的文件。示例main.go main_test.go
其中main.go是包含代码的文件。main_test.go是包含测试代码的文件。

相关问题