ChatGPT解决这个技术问题 Extra ChatGPT

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"

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

对于 Go testing,您的测试文件应该有 **_test.go example.go 应该有相应的example_test.go

M
Michael Neale

包含测试的文件应称为 name_test,并带有 _test 后缀。他们应该在他们正在测试的代码旁边。

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

How to Write Go Code

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


除此之外,您的测试方法应该与测试代码位于同一包中,而不是您的问题中的 main 。
我的文件确实以 _test.go 结尾。为我解决这个问题需要在我添加到包的新测试文件中删除对 TestMain 的重新定义。我还必须将目录更改为包文件夹本身并从那里运行 go test 而不是从根目录运行它
@thwd 测试方法不需要(而且很多时候不应该)与测试代码在同一个包中。
包含 test 的文件不能仅命名为 _test.go。它应该在下划线之前至少有一个字符,例如 a_test.go
@Dan Esparza:+1,但我不知道如何在不出错的情况下将它们分开。
b
blockloop

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

这有帮助。要为非主包(在子目录中)运行测试:go test -v ./<package_name> 为该特定包运行测试。
在 Wndows 10 下, go test -v ./packagename 为我工作。
P
PodTech.io

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

好的:

func TestName (

坏的:

func NameTest (

该函数不会作为测试执行,结果报错


要添加到此,它必须是 Test,后跟大写字母或下划线等。您不能有 TestmyFunction()。这咬我。
Y
Yevhenii Shashkov

我遇到了同样的问题。除了以前的答案之外,如果您的包的文件夹名称是 testing,我会发现无法运行测试的问题。

下面问题的终端演示:

带有 testing 个文件夹名称:

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

没有 testing 文件夹名称:

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

就我而言,这很有帮助


这正是问题所在
S
Sumer

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

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

S
Sendhil Vel

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

去测试-v ./ ./2ndpackage ./3rdpackage ./4thpackages

这解决了这个问题。

我还在 Test 关键字和函数名 Test_FuncName 之间添加了“_”


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅