猿问

不运行名为 package_test.go 的程序

我在包pack1下有以下代码。文件名是pack1.go


package pack1


var Pack1Int int = 42

var pack1Float = 3.14


func ReturnStr() string {

    return "Hello world!"

}

以及主程序中的以下代码。文件名是package_test.go


package main


import (

    "fmt"

    "./pack1"

)


func main() {

    var test1 string

    test1 = pack1.ReturnStr()

    fmt.Printf("Return string from pack1 : %s\n", test1)

    fmt.Printf("Integer from pack1 : %d\n", pack1.Pack1Int)

}

当我尝试使用命令运行它时,出现go run package_test.go以下错误:


go run: cannot run *_test.go files (package_test.go)


但是如果我将文件重命名为abc.go那么我会得到正确的输出,即


Return string from pack1 : Hello world!

Integer from pack1 : 42

我很好奇使用package_test.goas 文件名有什么问题。对于只有主包的代码,这个名称工作正常。


这是 Go 中的错误还是我做错了什么?


米琪卡哇伊
浏览 253回答 2
2回答

素胚勾勒不出你

不是错误,它是这样设计的。go run检测_test文件并将它们视为包的测试文件,测试文件将被编译为单独的包,然后与主测试二进制文件链接并运行。建议把你的包文件放到GOPATH/src/PACK_NAME/,然后*_test.go用go test.

慕娘9325324

你不能命名你的程序文件,*_test.go因为这是集成 Go测试系统的一部分要编写新的测试套件,请创建一个名称以 _test.go 结尾的文件,其中包含此处所述的 TestXxx 函数。将该文件与正在测试的文件放在同一个包中。该文件将从常规包构建中排除,但会在运行“go test”命令时包含在内。有关更多详细信息,请运行“go help test”和“go help testflag”。只需重命名package_test.go为packagetest.go
随时随地看视频慕课网APP

相关分类

Go
我要回答