首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以创建共享的测试实用程序吗?

我可以创建共享的测试实用程序吗?
EN

Stack Overflow用户
提问于 2015-08-04 02:21:18
回答 1查看 12.8K关注 0票数 26

我想知道是否有可能在go中跨包共享测试实用程序代码。具体地说,我正在编写一个TCP服务器,它将由多个处理程序用于不同的消息类型,并希望重用一组通用的测试实用程序。

主TCP服务器代码在mypkg/tcpserver中。

代码语言:javascript
复制
mypkg/tcpserver/tcp_server.go
mypkg/tcpserver/tcp_server_test.go
mypkg/tcpserver/testutils_test.go

mypkg/tcpserver和其他包可以使用testutils_test.go代码作为共享库来设置测试服务器和客户端,以便进行测试。例如,在handler子包中,我有:

代码语言:javascript
复制
mypkg/tcpserver/handler/handler.go
mypkg/tcpserver/handler/csv_handler.go
mypkg/tcpserver/handler/csv_handler_test.go
mypkg/tcpserver/handler/delim_handler.go
mypkg/tcpserver/handler/delim_handler_test.go

handler/*_test.go文件都会导入mypkg/tcpserver,但无法访问在mypkg/tcpserver/testutils_test.go中定义的测试实用程序

代码语言:javascript
复制
$ wgo test mypkg/tcpserver/handler
# mypkg/tcpserver/handler
src/mypkg/tcpserver/handler/csv_handler_test.go:37: undefined: tcpserver.CreateTestServer
src/mypkg/tcpserver/handler/csv_handler_test.go:40: undefined: tcpserver.TestSender
FAIL    mypkg/tcpserver/handler [build failed]

看起来测试可以导入其他包,但不能导入那些包中定义的测试代码?这就是你的意图吗?如果是这样的话,有没有一种惯用的方式来在go中的包之间共享测试实用程序?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-04 02:26:32

在非_test.go文件中创建包含测试实用程序的包。这种方法的几个示例是httptestiotest

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31794141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档