unit-testing - 不运行名称为 package_test.go 的程序

标签 unit-testing 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: 无法运行 *_test.go 文件 (package_test.go)

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

Return string from pack1 : Hello world!
Integer from pack1 : 42

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

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

最佳答案

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

关于unit-testing - 不运行名称为 package_test.go 的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35099417/

相关文章:

go - slice 内容的大小(以字节为单位)

json - 使用对象或字符串数​​组的字段解码 json

Java 构造函数被多次调用

java - 单元测试依赖于另一个服务类的Spring引导服务类

c# - 单元测试,NUnit 还是 Visual Studio?

unit-testing - 测试优化

database - 在 Golang 中缓存数据库结果( revel )

memory-management - 在保持其子 slice 的同时生长 slice

list - 戈朗 : create a slice of strutcs

ruby - Sinatra 单元测试 - 使用 JSON 正文发布