当我在编写一个接口时,通常很方便地将我的测试定义在与接口相同的包中,然后定义多个实现接口集的包,例如。
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 测试并运行它们。
似乎是一个非常俗气的解决方案。
有没有更好的方法来做到这一点?