Как использовать тестовый пакет на игровой площадке?

testing Пакет доступен на игровой площадке.

Как я могу использовать игровую площадку для демонстрации концепций тестирования без доступа к go test?

Я предполагаю, что это возможно с помощью функции testing.RunTests. Мои попытки сделать это всегда генерируют только "тестирование: предупреждение: тесты не запускаются".

Пример: https://play.golang.org/p/PvRCMdeXhX

Для контекста, мой вариант использования для обмена быстрыми примерами тестов, примеров и тестов с коллегами. Я часто использую игровую площадку для обмена фрагментами кода.

3 ответа

Решение

Вам нужно использовать testing.Main:

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

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

Если вы хотите использовать "не рекомендуется", но нестабильно:

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

Ответ Дейва по- прежнему работает как способ запуска тестов вручную, но если вы читаете «О программе», тесты теперь поддерживаются автоматически:

Если программа содержит тесты или примеры и не содержит основной функции, служба запускает тесты. Тесты, скорее всего, не будут поддерживаться, поскольку программа работает в изолированной среде с ограниченными ресурсами.

Существуют ограничения по времени исполнения на детской площадке, и я считаю, что они меньше минимального времени исполнения, используемого скамейкой. Из рассмотрения источника go test команда, похоже, текущая правильная точка входа для тестовtesting.MainStart который вы можете или не можете использовать удачу. Технически это API для внутреннего использования и не подлежит руководству по совместимости, поэтому YMMV.

Другие вопросы по тегам