我对为Go中的"未导出(私有)函数"创建单元测试很感兴趣.然而,基本上很难在测试包中从它们创建单元测试,因为我必须将它们"公开".最终,这让他们成为私有的观点不攻自破.重点是这些帮助器函数帮助模块化,现在它们是模块化的,如果能够为它们创建单元测试,而不使它们对除测试包之外的所有人都可用,那就太好了,很好,它们不是除了测试套件或实际包本身之外的任何人都应该访问或使用的函数.

有什么建议吗?有没有可能在GO中only个出口到自己的包和1个额外的包或类似的东西?

推荐答案

在包中创建一个测试文件

library_test.go

package mypkg

func TestPrivateStruct(t *testing.T){
  pf := private{ "Private Field" }
  ....
}

图书馆go

package mypkg

type private struct {
  privateField string
}

go test mypkg -v将使用您的私有 struct 运行测试

Go相关问答推荐

GoLang Mochi MQTT服务器(带Python Paho MQTT客户端SSL身份验证失败

VS代码,Golang格式顽固的情况与switch / case

Go:嵌入类型不能是类型参数""

如何将泛型函数作为参数传递给golang中的另一个函数?

如何存储来自异步Goroutine的返回值列表?

Golang html/模板&需要错误数量的参数1在模板中使用';调用';获得0&q;

Wamtime Memory中的‘Offset’是什么?Read?

如何在Golang中使用ECHO服务器实现Socket.IO服务器

在整个SQL事务中将使用上下文作为默认设置吗?

调用库和直接操作效率有区别吗?

在 Go 中将元数据从一个 JPEG 复制到另一个

一个Go module可以和之前的非module模块发布在同一个路径下吗?

使用 ssh 从私有 gilab 仓库导入一个 go 项目:未知修订

Go 信号处理程序不处理终端窗口关闭

具有未导出字段的 struct 类型之间的转换

如何使用 Status 字段创建 Kubernetes 对象?

如何通过组合来自不同包的接口来创建接口?

Grafana/Prometheus 将多个 ip 可视化为查询

如何使用带有Electron 表格 ID、Electron 表格名称、表格 ID 和值的 golang 在 googlesheet 中插入数据

Golang 与 Cassandra db 使用 docker-compose:cannot connect (gocql)