gpt4 book ai didi

testing - Golang 测试,相同的包,未定义的函数

转载 作者:数据小太阳 更新时间:2023-10-29 03:42:15 37 4
gpt4 key购买 nike

我很新,正在尝试为 go 编写一个测试文件。当我运行测试时,我有两个问题:1. 我必须运行“go test -cover”,然后我才能看到这个:

#command-line-arguments
./client_test.go:59: undefined: Init
FAIL command-line-arguments [build failed]

我的问题是为什么我不能只运行:去测试(如果我这样做,我会看到这个:

exit status 1
FAIL command-line-arguments 0.008s
  1. 我的第二个问题是包中有两个文件(一个大项目中的一个包),一个 file1 和一个 file1 的 test.go 文件。为什么我无法访问 test.go 中 file1 中的函数(未定义)。我确定测试文件的格式正确并且函数已导出。

这几天我一直在网上查看解决方案。任何想法都会有所帮助。很抱歉,我无法显示代码,非常感谢您的帮助。

谢谢

编辑2:谢谢,伙计们,我正在考虑环境变量,(我正在设置它们)。我真的很感谢你的意见。

编辑1:感谢您的回复,我确实尝试了一小段代码来查看 go test 是否正常:(对不起,我不能做我正在做的项目)你好.go:

package main

func hello1(i int) string {
if i > 0 {
return "Hello, world"
}
return "no value"

}

hello_test.go:

package main

import (
"testing"
"fmt"
)
func TestHello(t *testing.T) {
var s string
var s2 string
var s3 string
s = hello1(3)
if s != "Hello, world" {
t.Error("Expected: Hello, world, got", s)
}
s2 = hello1(-3)
if s2 != "Hello, world" {
t.Error("Expected: Hello, world, got", s2)
}
s3 = hello1(0)
if s3 != "Hello, world" {
t.Error("Expected: Hello, world, got", s3)
}
}

当我使用 IDE 运行这些文件时,我看到:

GOROOT=/usr/local/Cellar/go/1.9.3/libexec #gosetup
GOPATH=/Users/<here is my user name>/go #gosetup
/usr/local/Cellar/go/1.9.3/libexec/bin/go test -c -i -o /private/var/folders/cx/0mvyxrxj5755jc68mqvtywth0000gn/T/___TestHello_in_hello_test_go /Users/minghan/awesomeProject/hello_test.go #gosetup
# command-line-arguments
./hello_test.go:13:6: undefined: hello1
./hello_test.go:17:7: undefined: hello1
./hello_test.go:21:7: undefined: hello1

Compilation finished with exit code 2

当我在命令行中运行时:go test -cover:

--- FAIL: TestHello (0.00s)
hello_test.go:19: Expected: Hello, world, got no value
hello_test.go:23: Expected: Hello, world, got no value
FAIL
coverage: 100.0% of statements
exit status 1
FAIL _/Users/minghan/awesomeProject 0.007s

最佳答案

对于写go来说,拥有正确的文件夹结构真的很重要,这样你以后就不会头疼了。你需要这样的 gopath:

bin/
hello # command executable
outyet # command executable
pkg/
linux_amd64/
github.com/golang/example/
stringutil.a # package object
src/
github.com/golang/example/
.git/ # Git repository metadata
hello/
hello.go # command source
outyet/
main.go # command source
main_test.go # test source
stringutil/
reverse.go # package source
reverse_test.go # test source
golang.org/x/image/
.git/ # Git repository metadata
bmp/
reader.go # package source
writer.go # package source
... (many more repositories and packages omitted) ...

(取自https://golang.org/doc/code.html#Workspaces)

默认情况下,gopath 是“$HOME/go”或其他操作系统上的等效路径 (home_directory/go)

所以你最终会在这样的地方得到你的项目:$HOME/go/src/github.com/matthin/awesomeproject

并将所有文件放入其中。

然后要运行测试,您可以执行 go test github.com/matthin/awesomeproject 或者您可以通过指定该目录中的每个文件来运行测试,就像您的情况一样:

去测试main.go main_test.go

然后 go test runner 知道它需要评估两个文件并且会找到函数。

关于testing - Golang 测试,相同的包,未定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48775370/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com