0
這裏是我的目錄層次結構:Golang:如何在導入的包中重用測試代碼?
/
|-- main.go // package main, an HTTP server which accepts request and calls C/U APIs in pkg1 to finish certain task
|-- main_test.go // wants to call veryfyTaskNumber in pkg1_test
|-- pkg1 // package pkg1, CRUD APIs with Retrieve&Delete unexported for safety
|-- pkg1_test.go // contains a function verifyTaskNumber(*testing.T, taskName string, expectedNo int) which calls internal Retrieve function in pkg1
我只在pkg1_test.go
測試的一些實用功能。 main.go
進口pkg1
。現在我想在我的main_test.go
中使用這些功能。搜索後,我發現兩種可能的解決方案,但它們都有一些缺點:
- 將這些函數移動到
pkg1.go
。但是,這些函數可能包含在由go build
生成的二進制文件中。 - 移動這些功能到一個單獨的
testutility
包,然後將其導入手動在*_test.go
。問題是這些函數在pkg1
中使用了一些內部方法。
所以我想知道是否有更好的解決這個問題。
通常你不想明確地使用未導出的函數測試代碼。我會認爲這是一種代碼味道,並探索其他方式來組織您的代碼。如果你提供更多細節,有人可能會幫助你更多。 – Corbin
@Corbin更新。 – lz96
我還補充一點,你不_have_調用從main_test.go測試功能。如果你正確地命名,你可以放手給你打電話。 (即前面帶有「測試」) https://golang.org/doc/code.html#Testing – cmp