t.Run принимает имя и функцию — создаёт subtest. Имя используется для фильтрации через -run флаг. Функция получает свой *testing.T и выполняется как отдельный тест. Если subtest упал, родительский тест тоже считается failed, но остальные subtests продолжают работать.