Я хочу создать пакет в Go с тестами и примерами для пакета в виде подкаталогов, чтобы рабочее пространство было чище. Возможно ли это, и если да, то как?
Вся документация всегда помещает тестовый код в то же место, что и другой код, это лучше в чем-то или просто соглашение?
go test ./...
будет запускать тесты для текущей папки и всех вложенных папок. См. Мой ответ нижеОтветы:
Обратите внимание, что вы можете запускать
go test
«рекурсивно»: вам нужно перечислить все пакеты, которые вы хотите протестировать .Если вы находитесь в корневой папке проекта Go, введите:
./...
Обозначение " " описано в разделе " Описание списков пакетов " " командыgo
":Если вы храните
_test.go
файлы во вложенной папке, команда «go test ./...
» сможет их забрать.Но:
При этом я все же предпочел бы хранить
_test.go
файл рядом с основным исходным файлом: его легче найти.источник
Поместите свои тесты вместе с кодом в тот же каталог в файле с именем,
file_test.go
где «файл» - это имя файла исходного кода, который вы тестируете. Это условность, и я на собственном опыте убедился, что это лучше всего.Если
go test
инструмент недостаточно автоматизирован для вас, вы можете изучить GoConvey , у которого есть веб-интерфейс, который автоматически обновляет и запускает традиционные тесты Go, а также тесты GoConvey (которые основаны на поведении и являются более самодокументированными. чем традиционные тесты Go).источник
go test
также может работать с вложенными папками. См. Мой ответ нижеотредактированный
Основываясь на ответе VonC,
Этот ответ действителен в
go1.11
. Пока не тестировал в старшихgo
версиях.Для тех из вас, кто любит хранить свои тесты в подпапке, скажем
test
, запустивпопытается запустить тесты в каждой папке, даже в тех, которые не содержат тестов, поэтому
?
в последующем отчете будет отображаться для папок, не являющихся тестовыми.Бег
вместо этого будет
test
нацелен только на ваши папки, поэтому чистый отчет будет сосредоточен только на ваших папках с тестами.ВНИМАНИЕ
Помните, что использование подпапок с тестами предотвратит вычисление отчета о покрытии. Философия go - оставлять тестовые файлы в папках с пакетами.
источник
go test ./.../test
возвращаетgo: warning: "./.../test" matched no packages
// не только целевые тестовые папки. go версия go1.13 darwin / amd64Обычно я не тестирую, но вы можете сгруппировать свой файл в каталоги и использовать импорт, например
import "./models"
если это один уровень,import "../models
если один уровень и один уровеньНапример, для:
./models/todo.go
./test/todo_test.go
испытанию
todo.go
отtodo_test.go
, ваш импорт вtodo_test.go
будетimport "../models"
источник