【发布时间】:2019-10-17 15:36:58
【问题描述】:
我的 golang 库中有一些测试助手代码,我想在测试各种子包时使用这些代码。但是,我遇到了一个障碍:
outer
|
+- test_helpers_test.go
|
+- inner
|
+- something.go
+- something_test.go
要使用test_helpers_test.go中的代码,我必须导入外包装。但是当我从something_test.go导入外包时,报错“import cycle not allowed in test”
所以我尝试为共享测试助手制作一个包:
outer
|
+- test
| |
| +- test_helpers_test.go
|
+- inner
|
+- something.go
+- something_test.go
现在它抱怨“/home/karl/Projects/outer/test 中没有非测试 Go 文件”
我不想称它为test_helpers.go,因为它是我的测试代码的一部分,而不是我的库代码。我不想在库中发布该代码。
我该如何解决这个问题?
更新:我可以通过在test 目录中创建一个dummy.go 文件来解决此问题,但现在出现了一个新问题:导入包不会导入其测试代码!所以现在我得到:./something_test.go:12:2: undefined: test.AssertDoesPanic
【问题讨论】:
-
您可以将其称为
test_helpers.go,但将其放在名为testdata的包中。 -
这与在名为
test的包中调用test_helpers.go有何不同? -
不确定
test包名,但testdata被 go 工具忽略。 -
我不希望它被忽略。它包含我要调用的测试代码。
-
@Karl,是的。您库的用户无法导入您的内部包。