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

新手上路,请多包涵

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

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

原文由 Juan M 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

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

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

如何编写 Go 代码

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

原文由 Ainar-G 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

原文由 blockloop 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题