gpt4 book ai didi

events - Go lang 测试事件监听器?

转载 作者:IT王子 更新时间:2023-10-29 01:43:13 26 4
gpt4 key购买 nike

这个问题是关于Go语言测试的。正如您可能知道的,大多数主流语言都有自己的 xUnit 框架。这些框架中的大多数都能够监听测试运行事件(例如测试用例开始、测试用例完成、测试失败等)。这通常称为测试事件监听器,主要用于为框架编写第三方扩展。

我的问题:是否有任何类似的方法来附加到标准 Go 语言测试框架事件 (http://golang.org/pkg/testing/)?

最佳答案

并非开箱即用,但自己组装应该不难。任何名为 init 的函数都保证在任何其他函数之前运行,对于测试也是如此。

在你的测试文件中:

var listener pkg.EventListener
func init() {
pkg.SetupMyFramework()
listener = pkg.Listener()
}

然后在任何测试中

func TestXxx(t *testing.T) {
listener.Dispatch(pkg.MakeEvent("TestXxx", pkg.TestStarted))

err := DoSomething()
if err != nil {
listener.Dispatch(pkg.MakeEvent("TestXxx", pkg.TestFailed))
t.Fatal("Test failed")
}

listener.Dispatch(pkg.MakeEvent("TestXxx", pkg.TestPassed))
}

当然,您可以根据需要扩展它(使用 channel 、围绕 Fatal 制作包装函数以减少冗长等),但这就是如何集成它的要点。

关于events - Go lang 测试事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23699237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com