go - 如何打包 golang 测试助手代码?
问题描述
我的 golang 库中有一些测试助手代码,我想在测试各种子包时使用它们。但是,我遇到了一个障碍:
outer
|
+- test_helpers_test.go
|
+- inner
|
+- something.go
+- something_test.go
要使用中的代码test_helpers_test.go
,我必须导入外包。但是当我从 导入外包时something_test.go
,它会抱怨“测试中不允许导入周期”
所以我尝试为共享测试助手制作一个包:
outer
|
+- test
| |
| +- test_helpers_test.go
|
+- inner
|
+- something.go
+- something_test.go
现在它抱怨“/home/karl/Projects/outer/test 中没有非测试 Go 文件”
我不想调用它,test_helpers.go
因为它是我的测试代码的一部分,而不是我的库代码。我不想在库中发布该代码。
我该如何解决这个问题?
dummy.go
更新:我可以通过在目录中创建一个文件来解决这个问题test
,但现在出现了一个新问题:导入包不会导入其测试代码!所以现在我得到:./something_test.go:12:2: undefined: test.AssertDoesPanic
解决方案
你是对的,你不能从另一个包中导入测试代码,所以你的辅助函数必须进入正确的代码文件而不是测试文件。
如果它不是从您的非测试代码中导入的,那么它将不会被构建到最终的二进制文件中。
作者倾向于调用包...test
来表明它只是测试助手,例如httptest
来自标准库或zaptest
开源。
https://golang.org/pkg/net/http/httptest/ https://godoc.org/go.uber.org/zap/zaptest
推荐阅读
- java - 用于记录哪种模式是好的
- matlab - 在matlab中用向量绘制多条曲线的3D模型
- python - 导入错误:在导入熊猫时找不到 DLL 模块
- c++ - 异常“错误:预期';' 在 ndk-build 的顶级声明符之后
- api - Jmeter 中的 TCP/IP API
- node.js - 未使用用于 alpine linux 的预构建 node-sass
- python - 可视化复函数 z1^n + z2^n = 1
- android - 如何通过从另一个应用程序共享音频来共享音频
- c - Windows VS2017 上的 jemalloc 环境设置
- java - 是否有明确定义的默认端口号用作 Java RMI 注册表端口