为了账号安全,请及时绑定邮箱和手机立即绑定

不运行名为 package_test.go 的程序

不运行名为 package_test.go 的程序

Go
米琪卡哇伊 2021-12-07 16:49:31
我在包pack1下有以下代码。文件名是pack1.gopackage pack1var Pack1Int int = 42var pack1Float = 3.14func ReturnStr() string {    return "Hello world!"}以及主程序中的以下代码。文件名是package_test.gopackage mainimport (    "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 中的错误还是我做错了什么?
查看完整描述

2 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

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

查看完整回答
反对 回复 2021-12-07
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

你不能命名你的程序文件,*_test.go因为这是集成 Go测试系统的一部分

要编写新的测试套件,请创建一个名称以 _test.go 结尾的文件,其中包含此处所述的 TestXxx 函数。将该文件与正在测试的文件放在同一个包中。该文件将从常规包构建中排除,但会在运行“go test”命令时包含在内。有关更多详细信息,请运行“go help test”和“go help testflag”。

只需重命名package_test.gopackagetest.go


查看完整回答
反对 回复 2021-12-07
  • 2 回答
  • 0 关注
  • 252 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信