这个问题是关于Go语言测试的。您可能知道,大多数主流语言都有自己的xUnit框架。这些框架中的大多数都能够侦听测试运行事件(例如,开始测试用例、完成测试用例、测试失败等等)。这通常称为测试事件侦听器,主要用于编写框架的第三方扩展。
我的问题是:对于标准的Go语言测试框架(http://golang.org/pkg/testing/)?,是否有类似的附加方式?
发布于 2014-05-16 23:46:49
不是从盒子里拿出来的,但你自己装起来应该不难。任何名为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))
}当然,您可以任意扩展它(使用通道,使包装器函数围绕Fatal使其更少冗长,等等),但这是如何集成它的要点。
发布于 2014-05-16 16:17:36
就我所知没有。它将有助于了解您正在努力完成什么,以便您需要这种能力?
发布于 2018-02-05 00:24:05
go1.10即将发布,其中一个新特性是go test -json (release https://tip.golang.org/doc/go1.10#test)。
使用go test -json,您可以解析测试输出并将其发送到第三方框架。
https://stackoverflow.com/questions/23699237
复制相似问题