建议详情
今天,示例通常作为带有godoc的"func main()"出现,如图所示。它们可以像那样可执行。我正在尝试为我创建的测试框架(https://github.com/hugelgupf/vmtest)编写示例,该框架需要使用testing.TB。要在pkg.go.dev中创建可执行示例,示例必须能够接受testing.T或testing.B作为参数。
我认为现有的示例“API”应该保持不变。但是,如果给定一个带有testing.T/B/F参数的示例,它应该被假定需要它,并在文档中以这种方式呈现,例如:
func ExampleFunctionname(t *testing.T) {
t.Logf("foobar")
// Output: foobar
}
应该像这样出现在文档中,与Functionname
一起作为可执行代码片段:
package main_test
import (
"testing"
"packagepath"
)
func TestExample(t *testing.T) {
t.Logf("foobar")
}
3条答案
按热度按时间zvokhttg1#
我编写了一个测试框架,遇到了同样的问题。我通常使用基于示例的驱动开发,但对于测试框架来说,这有点困难。我不得不创建一个虚拟的testing.TB,它并不总是工作得很好。例如,testing.TB没有T.Run,所以我只是用可以编译但不会执行的代码来替代它。
1szpjjfi2#
这似乎是一个特殊的目的。示例不必有输出。我们是否也应该允许示例函数接受一个
slog.Logger
参数?似乎很难知道何时停止。ttcibm8c3#
我认为建议应该是让测试更容易进行。T/B/F用于测试目的。因此代码看起来像这样:
这也可以在TestFunction中使用,以更轻松地测试测试框架。