Как автоматически включить параллельное выполнение тестов внутри пакета? - PullRequest
2 голосов
/ 08 июля 2019

Я хотел бы запускать тесты в пакете параллельно. Мы знаем, что функция testing.Parallel позволяет нам запускать два теста в пакете параллельно, но есть ли способ автоматически разрешить параллельное выполнение всех тестов в пакете без вызова t.Parallel()?

Например, есть ли какие-нибудь флаги, которые я могу добавить в go test, чтобы все тесты с сигнатурой функции func(t *testing.T) выполнялись параллельно?

1 Ответ

2 голосов
/ 08 июля 2019

Это происходит от commit f80d8fb и Go1 (октябрь 2011 г.)

Опция (--parallel) была обсуждена в то время , но быстро отклонена:

Многие тесты не будут работать, если работать параллельно.(Многие тоже.)
Наличие флага --parallel означает, что сценарии и т. Д. Захотят включить его, и тесты должны быть в состоянии защитить себя от ошибочных запусков.

Я предлагаю занести в белый список отдельные тесты, которые заведомо могут выполняться параллельно, и самый простой способ сделать это - назвать их по-другому.

Мне нравится t.Parallel.
Понятно, какие тесты параллельны, это не глобальное значение по умолчанию, поэтому вы можете применить его только к тестам, где он уместен и необходим, и поведение велико: сначала запускаются все непараллельные, то есть простые, а затем параллельные могут жевать процессор.

...