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

mmindenhall:

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

主要的TCP服务器代码在mypkg/tcpserver

mypkg/tcpserver/tcp_server.go
mypkg/tcpserver/tcp_server_test.go
mypkg/tcpserver/testutils_test.go

testutils_test.go代码旨在成为一个共享库,mypkg/tcpserver其他程序包和其他程序包都可以使用该共享库来为它们的测试设置测试服务器和客户端。例如,在handler子包中,我有:

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

$ 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]

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

松饼上衣:

创建一个包含非_test.go文件中的测试实用程序的程序包。httptestiotest是该方法的两个示例

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以绑定到实用程序类吗?

Qt-包含“实用程序”功能的共享库吗?

可以使用Linux实用程序创建Windows 10安装介质(USB)吗?

我可以在jsdoc中使用打字稿实用程序类型吗?

如何测试创建文件的实用程序功能

Ember 助手可以用作实用程序吗?

我使用画布创建了图形实用程序。有什么办法我也可以合并JButtons,JTextFields等

共享实用程序功能用于集成测试和基准测试的惯用方式是什么?

我可以制作一个使用任意表达式作为参数的实用程序方法吗?

swtableviewcell如何创建一个实用程序按钮,当我按下它时可以更改状态

在多模块Maven项目中应将共享测试实用程序放在哪里?

我们应该为实用程序编写单元测试吗?还是只为引用它们的用例编写单元测试?

我可以在我的 macOS 应用程序中嵌入第 3 方命令行实用程序并将其提交到 Mac App Store 吗?

如何创建实用程序类?

GWT创建实用程序JavaScript库

如何正确创建实用程序类

如何创建实用程序USB?

我编写的实用程序无法正常运行+测试用例

可以使用备份实用程序仅还原一个目录吗?

实用程序可以更改网络适配器的高级设置吗?

磁盘实用程序(例如clonezilla)中的创建磁盘映像吗?

创建既是命令行实用程序又是导出方法的 npm TypeScript 模块 - 可能吗?

是否可以在 Tailwind 中为特定屏幕创建实用程序?

在React中,是否可以从实用程序函数内部访问Redux操作创建者?

Bootstrap网格行间距cna我使用实用程序类吗?

系统实用程序会降低我的PC速度而不是加快速度吗?

在哪里放置测试实用程序方法的测试?

我想创建一个CAGradientLayer子类/实用程序类

Android编写实用程序方法的单元测试