如何在 go playground 中使用测试包?

How do I use the testing package in go playground?

testing 包在 go playground 中可用。

如何在无法访问 go test 的情况下使用 go playground 来演示测试概念?

我的假设是可以使用 testing.RunTests 函数。我这样做的尝试总是只生成 "testing: warning: no tests to run"。

示例:https://play.golang.org/p/PvRCMdeXhX

就上下文而言,我的用例是与同事共享测试、示例和基准的快速示例。我经常依赖 go playground 来分享这样的代码片段。

您需要使用testing.Main:

func main() {
    testSuite := []testing.InternalTest{
        {
            Name: "TestCaseA",
            F:    TestCaseA,
        },
    }
    testing.Main(matchString, testSuite, nil, nil)
}

https://play.golang.org/p/DQsIGKNWwd

如果想使用"non deprecated"但不稳定的方式:

https://play.golang.org/p/4zH7DiDcAP

playground 上有执行时间限制,我相信它们少于 bench 使用的最短执行时间。通过查看 the source of the go test command, it looks like the current proper entry point for tests is testing.MainStart,您可能会或可能不会使用它。它在技术上是内部使用 API,不受兼容性指南的约束,因此 YMMV。

仍然作为调用测试的手动方式工作,但如果您阅读“关于”测试,现在自动支持:

If the program contains tests or examples and no main function, the service runs the tests. Benchmarks will likely not be supported since the program runs in a sandboxed environment with limited resources.