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