генерации тестов в GoLand? (https://youtrack.jetbrains.com/issue/GO-6283)
Тут (File | Settings | Editor | File and Code Templates) есть какие-то шаблоны, но это не то, что используется при генерации. А где то? Может быть кто-то пробовал разобраться в вопросе?
Не, не получится. А что именно хочется поменять?
начнем с того, что если мы добавим t.Parallel(), то работать (как надо) не будет: for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { t.Parallel() но а вообще много чего, тестифай хочется и т.п.
Дополню - речь про табличные тесты.
Testify в 2021.3 появится.
🙏 но какие-то мелки "под себя" все-таки хочется.
В шаблоне очень много кастомизаций, которые зависят от контекста. Мы попытались его сделать, и это выглядит ужасно из-за обилия переменных. Решили, что лучше будем тюнить существующий вариант.
Артем, раз уж есть возможность обратиться напрямую... Эта история с t.Parallel()... Вот тут описана проблема: https://gist.github.com/posener/92a55c4cd441fc5e5e85f27bca008721, не плохо было бы чтобы шаблон содержал замыкание по-умолчанию, а то не всегда припомнишь, да и кто-то может просто этого не знать.
Смотрю, но пока не понял, в чем проблема. Помогли бы два снипета - как сейчас и как хочется.
по умолчанию GoLand генерирует t.Run и захватывает структуру тестовой строчки по ссылке (как замыкание) если поставить t.Parallel, тогда Run будет в отдельной горутине и получается https://golang.org/doc/faq#closures_and_goroutines
сейчас так: for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { хочется вот так: for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { или for i := range tests { tt := tests[i] t.Run(tt.name, func(t *testing.T) {
Это хорошая идея ловить такие ситуации. У нас есть тикет об этом, можно за него проголосовать: https://youtrack.jetbrains.com/issue/GO-5222 И спасибо за дополнительную инфомрацию по проблеме!
Обсуждают сегодня