2016-01-20 4 views
6

Из мира питона, очень полезны светильники (Fixtures определяет контракт на Python для многоразовой логики состояния/поддержки, в первую очередь для модульного тестирования). Мне было интересно, есть ли подобная поддержка в Голанге, которая может позволить мне запускать мои тесты с помощью некоторых предопределенных приспособлений, таких как настройка сервера, разрывание его, выполнение повторяющихся задач каждый раз при запуске теста? Может ли кто-нибудь указать мне на некоторые примеры того, как делать то же самое в Голанге?Светильники в тестах Голанг

+1

Заканчивать [гинкго] (https://onsi.github.io/ginkgo), который имеет '' BeforeEach' и AfterEach'. – PieOhPah

+0

Спасибо @ pie-o-pah – psbits

ответ

6

Если вы хотите использовать стандартные инструменты тестирования Go, вы можете определить функцию с подписями TestMain(m *testing.M) и разместить там свой код прибора.

От testing package wiki:

Иногда необходимо для теста программы, чтобы сделать дополнительные настройки или демонтажа до или после тестирования. Иногда также необходимо, чтобы тест контролировал, какой код работает в основном потоке. Для поддержки этих и других случаев, если тестовый файл содержит функцию:

func TestMain(m *testing.M)

тогда генерируемый тест будет вызывать TestMain (м) вместо выполнения тестов непосредственно. TestMain запускается в главном goroutine и может выполнять любую настройку и разборку при вызове m.Run. Затем он должен вызвать os.Exit с результатом m.Run. Когда вызывается TestMain, флаг.Parse не запускается. Если TestMain зависит от флагов командной строки, в том числе от тестового пакета, он должен вызывать flag.Parse явно.

Простая реализация TestMain является:

func TestMain(m *testing.M) { 
    flag.Parse() 
    os.Exit(m.Run()) 
} 
Смежные вопросы