为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
森林海 2021-10-25 20:10:58
我想知道是否可以在 go 中跨包共享测试实用程序代码。具体来说,我正在编写一个 TCP 服务器,它将被多个处理程序用于不同的消息类型,并希望重用一组常见的测试工具。主要的 TCP 服务器代码在mypkg/tcpserver:mypkg/tcpserver/tcp_server.gomypkg/tcpserver/tcp_server_test.gomypkg/tcpserver/testutils_test.go该testutils_test.go代码旨在成为一个共享库,可供mypkg/tcpserver其他包使用,为他们的测试设置测试服务器和客户端。例如在handler子包中我有:mypkg/tcpserver/handler/handler.gomypkg/tcpserver/handler/csv_handler.gomypkg/tcpserver/handler/csv_handler_test.gomypkg/tcpserver/handler/delim_handler.gomypkg/tcpserver/handler/delim_handler_test.go这些handler/*_test.go文件都导入了mypkg/tcpserver,但它们无法访问中定义的测试实用程序mypkg/tcpserver/testutils_test.go:$ wgo test mypkg/tcpserver/handler# mypkg/tcpserver/handlersrc/mypkg/tcpserver/handler/csv_handler_test.go:37: undefined: tcpserver.CreateTestServersrc/mypkg/tcpserver/handler/csv_handler_test.go:40: undefined: tcpserver.TestSenderFAIL    mypkg/tcpserver/handler [build failed]似乎测试可以导入其他包,但不能导入这些包中定义的测试代码?这是意图吗?如果是这样,是否有一种惯用的方式在 go 中跨包共享测试实用程序?
查看完整描述

1 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

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


查看完整回答
反对 回复 2021-10-25
  • 1 回答
  • 0 关注
  • 179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信