首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何打包戈朗测试助手代码?

我如何打包戈朗测试助手代码?
EN

Stack Overflow用户
提问于 2019-06-01 06:20:16
回答 2查看 7.1K关注 0票数 12

我在我的golang库中有一些测试助手代码,我想在各种子包中进行测试时使用这些代码。然而,我遇到了一个障碍:

代码语言:javascript
复制
outer
|
+- test_helpers_test.go
|
+- inner
   |
   +- something.go
   +- something_test.go

要使用test_helpers_test.go中的代码,我必须导入外部包。但是当我从something_test.go导入外部包时,它会抱怨“在测试中不允许导入周期”。

因此,我尝试为共享测试助手制作一个包:

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-02 05:13:38

您是正确的,您不能从另一个包导入测试代码,因此您的助手函数必须进入正确的代码文件,而不是测试文件。

如果它不是从非测试代码中导入的,那么它就不会被构建到最终的二进制文件中。

作者倾向于调用包...test来表示它只是测试助手,例如标准库中的httptest或开源中的zaptest

https://golang.org/pkg/net/http/httptest/ https://godoc.org/go.uber.org/zap/zaptest

票数 14
EN

Stack Overflow用户

发布于 2019-06-01 06:24:58

go第8279期之后,我看到添加了虚拟文件,就像在提交479f8c7中一样

代码语言:javascript
复制
outer/outer.go

// +build ignore+
package outer

看看这能不能帮上忙,作为一个解决办法。

如上所述,在内部包(来自Go 1.4+)中使用测试助手代码是另一种选择,因为该项目的任何客户端都无法访问所述的帮助程序。见设计文件

您可以看到它在典型围棋项目布局中使用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56404355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档