猿问

如何在 go 中为多个包提供一个通用的测试套件?

当我编写接口时,在与接口相同的包中定义我的测试通常很方便,然后定义实现接口集的多个包,例如。


package/

package/impl/x <-- Implementation X

package/impl/y <-- Implementation Y

是否有一种简单的方法可以package/*_test.go在子包中运行相同的测试套件(在这种情况下,位于)?


到目前为止,我想出的最佳解决方案是添加一个测试包:


package/tests/

它实现了测试套件,并在每个实现中进行了测试以运行测试,但这有两个缺点:


1) 中的测试package/tests不在_test.go文件中,最终成为实际库的一部分,由godoc等记录。


2) 中的测试package/tests由自定义测试运行器运行,它必须基本上复制所有功能go test以扫描 go 测试并运行它们。


似乎是一个非常俗气的解决方案。


有没有更好的方法来做到这一点?


慕沐林林
浏览 207回答 3
3回答

哆啦的时光机

如果您共享一段代码以供不同包重用,那么是的,根据定义,它是一个库。即使仅用于从 *_test.go 文件进行测试。与在_test.go 文件中导入“fmt”的“testing”没有区别。并且由 godoc 记录的 API 是一个加号,而不是减去恕我直言。
随时随地看视频慕课网APP

相关分类

Go
我要回答