Я пытаюсь понять, действительно ли t.Parallel()
необходим для одновременного запуска подтестов в go
. Поэтому я читаю соответствующую документацию
. Субтесты также можно использовать для управления параллелизмом. Родительский тест будет завершен только после завершения всех его подтестов. В этом примере все тесты выполняются параллельно друг с другом и только друг с другом, независимо от других тестов верхнего уровня, которые могут быть определены:
func TestGroupedParallel(t *testing.T) {
for _, tc := range tests {
tc := tc // capture range variable
t.Run(tc.Name, func(t *testing.T) {
t.Parallel()
...
})
}
}
- выше я сказал, что t.Parallel()
требуется для одновременного выполнения подтестов.
Однако приведенный ниже текст меня немного смутил, потому что он показался противоречивым:
Выполнение не возвращается, пока параллельные подтесты не будут завершены, предоставляя способ очистки после группы параллельных тестов:
func TestTeardownParallel(t *testing.T) {
// This Run will not return until the parallel tests finish.
t.Run("group", func(t *testing.T) {
t.Run("Test1", parallelTest1)
t.Run("Test2", parallelTest2)
t.Run("Test3", parallelTest3)
})
// <tear-down code>
}
В качестве примера приводится «параллельные подтесты», но без использования t.Parallel()
, которые это тот случай?