问题标签 [go-testing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 提供 -coverpkg 参数时 go test 失败
我正在尝试在我的项目中的所有包中获得测试覆盖率。
当我执行以下命令时,测试正在成功执行并报告覆盖率。
go test
但是当我使用coverpkg=./...
参数执行时所有测试都失败了
这是命令的示例输出
我正在使用 go 版本 1.15.6
有没有办法找到构建失败的原因?
go - golang 测试在 test.v 的标志解析上失败
在我的 go 程序中,主要方法是:
我有一个看起来像的虚拟测试:
当我(从 goland 或命令行)运行测试时,出现以下错误:
当我删除主要标志的行时,测试正常执行关于如何解决这个问题的任何想法,好吗?
提前致谢
unit-testing - 使用 bufconn 对 gRPC 进行单元测试时模拟“peer”
我在我的 golang 服务器中实现了单向(客户端和服务器)流式 gRPC 方法。我遇到了bufconn
这使我能够在我的测试中通过内存连接创建我的服务器。但是,我的方法中有逻辑检查对等方的地址,它总是返回“bufconn”。我确实依靠对等方提供 IP 地址及其端口,但我无法使用 bufconn 真正实现这一点。
- 在 golang 中测试 gRPC 流式调用的规范(或首选)方法是什么?
- 在上下文中依赖对等信息是否被认为是一种反模式?
api - go中的单元测试
我想测试 API 函数,但参数给出了问题。
go - 如何为 godotenv.Load() .env 文件使用动态位置?
问题
我正在用 Go 构建一个 REST API。godotenv包用于加载环境变量。运行go run main.go
,项目按预期运行API,加载环境变量。
但是,当想要使用以下方式运行测试时:go test ./...
- 其中运行config/config_test.go
- 它会引发以下错误:(Error loading .env file
如函数中指定的那样)。
给定以下项目结构:
在config.go中,我使用以下函数来加载数据库配置。
我知道它在从 root 运行时可以工作,因为它.env
位于 root 中。运行时config/config_test.go
,它会尝试.env
在/config/.env
. 如果我将 line: 更改err := godotenv.Load(".env")
为err := godotenv.Load("../.env")
,则 config_test.go 运行成功,但go run main.go
from root 运行不成功。
问题
如何.env
从GetConfig()
函数中动态加载位置config.go
,以便go test ./...
和go run main.go
都可以加载.env
?
编辑
我知道将path string
参数传递给GetConfig()
函数将在我的应用程序中工作(我正在应用程序包中初始化此配置)。但是,我想在不同的目录中创建多个测试,并且不希望传递参数。还有另一种方法可以做到这一点吗?
go - 如何在golang中为基准测试初始化测试数据?
当我为我的算法编写基准测试时,我被一个问题弄糊涂了!
我的测试代码详细信息已推送到 github,我将其复制到此处并添加了一些注释。
https://github.com/hidstarshine/Algorithm/blob/master/leet/problem24_test.go
在问题行中,我调用 FTDBenchmarkSwapPairs1(FTD 表示填充测试数据)来初始化数据。
然后发生了一些令人惊奇的事情,BenchmarkSwapPairs1 似乎在许多 goroutine 中运行。
因此并发带来了数据竞争,并且由于 SwapPairs1 特殊的逻辑,调试变得一团糟。
SwapPairs1 将更改 ListNode 中的 Next。
然后我想将 BenchmarkSwapPairs1 移动到 for 块来解决这个问题。
但是数据竞赛似乎仍未解决,并且由于初始化时间的原因,基准测试没有任何意义。
我在 leetcode 上判断算法并被接受!
问:我怎样才能优雅地解决这个问题?需要一个好主意!
新的@Jimb
我添加只是添加一些调试信息然后它恐慌。我也认为它一开始不会有数据竞赛。
当我看到恐慌时,我做出了假设!
恐慌信息(重要)
go - 如何在 XML 中生成测试报告
我在 Go 中有测试(单元和集成),我需要用 XML(最好是 Junit)生成报告。此外,每个测试都会测试特定的功能。因此,我希望它们在报告中被分组/标记。
我在互联网上唯一能找到的是Go Junit Report。此工具将测试运行输出转换为 junit XML。我需要一种方法来标记 Go 测试中的功能并将其包含在报告中。
如何在 Go 中添加标签并将其输出?
go - 如何模拟内联函数
我正在尝试使用 GoMonkey 模拟一个函数,但我发现它失败了,因为编译器会在程序编译时内联这个函数,所以 GoMonkey 无法模拟它。
那么如何模拟这个函数或者如何模拟其他成员的私有函数呢?
测试代码如下:
模拟函数
go - 如何使用 Go 的 httptest 模拟多个不同的 HTTP 响应?
我创建了一些 Go 函数,它们对 Internet 上的服务进行 HTTP GET 调用并解析结果。
我现在正在为这些函数编写测试用例。在我的测试用例中,我使用 go 包httptest
来模拟对这些外部服务的调用。下面是我的代码。为简洁起见,特意删除了错误检查。这里是go-playground。
这是它产生的输出:
如您所见,我创建了一些虚拟 HTTP 响应数据{"A":"B"}
,当您向 发送 HTTP 请求时srv.URL
,它实际上会命中一个短暂的 HTTP 服务器,该服务器使用虚拟数据进行响应。凉爽的!
当您向 发送第二个 HTTP 请求时srv.URL
,它会再次使用相同的虚拟数据进行响应。但这就是我的问题出现的地方。{"C":"D"}
我希望临时 HTTP 服务器在第二次和第三次{"E":"F"}
收到请求时返回一些不同的数据。
如何更改main()
函数的第一行,以便服务器在随后的 HTTP 调用中响应我想要的数据?
go - 如何测试服务器的Oauth2.0资源
我想编写测试代码以验证正确的文档以到达第三方服务器的 Oauth2.0,我应该如何完成伪代码?