我想知道是否可以在 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 回答
- 0 關注
- 194 瀏覽
添加回答
舉報
0/150
提交
取消