- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一组使用 GoConvey 和 Go 1.3.1 的测试,在本地工作得很好。但是当我使用 Jenkins 触发构建时,也使用 Go 1.3.1,我从 Goconvey 那里得到了一个与我在测试中使用的 go 例程相关的 panic 。
测试可以在这里看到:
func TestListApplication(t *testing.T) {
s := &Session{}
s.Username = "foo"
s.Password = "bar"
ts := serveHTTP(t)
defer ts.Close()
s.Baseurl = ts.URL
s.initialize()
go func() {
<-s.Comms.AppCount
}()
Convey("TestListApplication", t, func() {
s.Comms.MainWaitGroup.Add(1)
application := &Application{}
err := json.Unmarshal(applicationJSON(), application)
So(err, ShouldBeNil)
revisions := &Revisions{}
err = json.Unmarshal(revisionsJSON(), revisions)
So(err, ShouldBeNil)
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
line := <-s.Comms.Msg
So(line, ShouldEqual, "3 admin foo\n")
}()
s.listApplication(application, revisions)
wg.Wait()
})
}
这里的错误:
86 assertions thus far
..
88 assertions thus far
panic: Convey operation made without context on goroutine stack.
Hint: Perhaps you meant to use `Convey(..., func(c C){...})` ?
goroutine 115 [running]:
runtime.panic(0x350d80, 0xc208083050)
/Users/administrator/jenkins/tools/org.jenkinsci.plugins.golang.GolangInstallation/1.3.1/src/pkg/runtime/panic.c:279 +0xf5
github.com/smartystreets/goconvey/convey.conveyPanic(0x4960d0, 0x78, 0x0, 0x0, 0x0)
/Users/administrator/jenkins/workspace/tropoCLI/golang/src/github.com/smartystreets/goconvey/convey/context.go:20 +0x6a
github.com/smartystreets/goconvey/convey.mustGetCurrentContext(0x5ecea0)
/Users/administrator/jenkins/workspace/tropoCLI/golang/src/github.com/smartystreets/goconvey/convey/context.go:52 +0x57
github.com/smartystreets/goconvey/convey.So(0x2d78e0, 0xc208001e80, 0x48f210, 0xc208001e60, 0x1, 0x1)
/Users/administrator/jenkins/workspace/tropoCLI/golang/src/github.com/smartystreets/goconvey/convey/doc.go:123 +0x1e
_/Users/administrator/jenkins/workspace/tropoCLI.func·048()
/Users/administrator/jenkins/workspace/tropoCLI/tropoCLI_test.go:222 +0x17d
created by _/Users/administrator/jenkins/workspace/tropoCLI.func·049
/Users/administrator/jenkins/workspace/tropoCLI/tropoCLI_test.go:223 +0x398
goroutine 16 [chan receive]:
testing.RunTests(0x48f340, 0x5ed680, 0x29, 0x29, 0x48f701)
/Users/administrator/jenkins/tools/org.jenkinsci.plugins.golang.GolangInstallation/1.3.1/src/pkg/testing/testing.go:505 +0x923
testing.Main(0x48f340, 0x5ed680, 0x29, 0x29, 0x5f5b40, 0x0, 0x0, 0x5f5b40, 0x0, 0x0)
/Users/administrator/jenkins/tools/org.jenkinsci.plugins.golang.GolangInstallation/1.3.1/src/pkg/testing/testing.go:435 +0x84
main.main()
_/Users/administrator/jenkins/workspace/tropoCLI/_test/_testmain.go:127 +0x9c
最佳答案
因为您正在尝试从另一个 goroutine 执行断言,所以您需要在 func()
中使用最近添加的上下文结构 (C
)签名,然后从该上下文中调用 So
。这是您稍作修改的版本:
Convey("TestListApplication", t, func(c C) {
s.Comms.MainWaitGroup.Add(1)
application := &Application{}
err := json.Unmarshal(applicationJSON(), application)
So(err, ShouldBeNil)
revisions := &Revisions{}
err = json.Unmarshal(revisionsJSON(), revisions)
So(err, ShouldBeNil)
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
line := <-s.Comms.Msg
c.So(line, ShouldEqual, "3 admin foo\n")
}()
s.listApplication(application, revisions)
wg.Wait()
})
这是拉动的结果 request #264 .
关于jenkins - Goconvey 在 Jenkins 上用 go routine 引起 panic ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26920344/
我正在设置 go 并尝试让一个简单的项目与 http://goconvey.co/ 一起工作 我将 $GOPATH 设置为/Users/joe/Desktop/playground/go 当我运行时
不确定为什么以下自定义断言不起作用,这似乎是一个编译错误,但我使用的语法似乎符合他们 wiki 页面中解释的内容:https://github.com/smartystreets/goconvey/w
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在编写一个简单的服务,想知道我应该如何使用 GoConvey 来测试 REST API 端点? 理想情况下,我相信我必须启动我的服务器来对其进行测试,但出于某种原因,我无法全神贯注于如何使用 Go
我如何用我的 go test 命令明确地说只运行主包的测试,而不运行源目录中的其他包。 目前它正在使用 $go test -v。但是......我也在使用 goconvey 并且它似乎正在递归运行。根
我开始使用 golang 进行一些开发工作,我很乐意使用 goconvey 提供的 BDD 风格。 我刚刚将我的系统配置为为 golang 设置,我已经去 github.com/smartystree
我有一个 public 文件夹来提供静态资源。我使用 Convey 编写了测试以将静态内容保存在此文件夹中。 由于在公用文件夹中创建了新文件,它陷入了一个永无止境的循环。 integration.go
我正在为我的一些 golang 网络服务项目使用 docker 容器,并且部分开发工作流正在使用 goconvey 来获得一些快速的 tdd 反馈。我想在 docker 容器中启动它并将端口公开给主机
我有一组使用 GoConvey 和 Go 1.3.1 的测试,在本地工作得很好。但是当我使用 Jenkins 触发构建时,也使用 Go 1.3.1,我从 Goconvey 那里得到了一个与我在测试中使
我是一名优秀的程序员,十分优秀!