
[英]How do I unit test this promptui package written in golang?
[英]How do I package golang test helper code?
我在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
因为它是我测试代码的一部分,而不是我的库代码。 我不想在库中发送该代码。
我该如何解决这个问题?
更新:我可以通过在test
目录中创建dummy.go
文件来解决此问题,但现在出现了一个新问题:导入包不会导入其测试代码! 所以现在我得到: ./something_test.go:12:2: undefined: test.AssertDoesPanic
: ./something_test.go:12:2: undefined: test.AssertDoesPanic
继去问题8279 ,我看到添加了虚拟文件,如tommie/acme-cli
commit 479f8c7
outer/outer.go
// +build ignore+
package outer
看看这是否有帮助,作为一种解决方法。
如上所述,在内部包(来自Go 1.4+)中使用测试帮助程序代码是另一种选择,因为此项目中的任何客户端都无法访问所述帮助程序。 见设计文件 。
您可以在典型的Go项目布局中看到它。
你是对的,你不能从另一个包导入测试代码,所以你的帮助函数必须进入正确的代码文件而不是测试文件。
如果未从非测试代码导入,则不会将其内置到最终二进制文件中。
作者倾向于看涨包...test
,以表明它只是试验帮手,例如httptest
从标准库或zaptest
从开源。
https://golang.org/pkg/net/http/httptest/ https://godoc.org/go.uber.org/zap/zaptest
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.