Тесты Голанга в подкаталоге
Я хочу создать пакет в Go с тестами и примерами для пакета в качестве подкаталогов, чтобы сохранить рабочее пространство чище. Возможно ли это и если да, то как?
Вся документация всегда помещает код тестирования в то же место, что и другой код, это лучше в некотором роде или просто соглашение?
Ответы
Ответ 1
Обратите внимание, что вы можете запустить go test
"рекурсивно": вам нужно перечислить все пакеты, которые вы хотите протестировать.
Если вы являетесь корневой папкой вашего проекта Go, введите:
go test ./...
Обозначение "./...
" описано в разделе " Описание списков пакетов " команда go
":
Путь импорта - это шаблон, если он содержит одну или несколько "...
" подстановочных знаков, каждая из которых может соответствовать любой строке, включая пустую строку и строки, содержащие слэши.
Такой шаблон расширяется для всех каталогов пакетов, найденных в деревьях GOPATH
, с именами, соответствующими шаблонам.
В качестве специального случая x/...
соответствует x
, а также подкаталоги x
.
Например, net/...
расширяется до net
и пакетов в своих подкаталогах.
Если вы сохраните файлы _test.go
в подпапке, команда "go test ./...
" сможет их забрать.
Но:
- вам нужно будет префикс экспортированных переменных и функций (используемых в ваших тестах) с именем вашего пакета, чтобы тестовый файл мог получить доступ к экспортированному контенту.
- вы не получили бы доступ к неэкспортируемому контенту.
Как я уже сказал, я бы предпочел сохранить файл _test.go
рядом с основным исходным файлом: его легче найти.
Ответ 2
Поместите свои тесты вместе с вашим кодом в тот же каталог в файле file_test.go
где "file" - это имя файла исходного кода, который вы тестируете. Это соглашение, и я считаю, что это лучше всего на моем собственном опыте.
Если инструмент go test
недостаточно автоматизирован, вы можете заглянуть в GoConvey, в котором есть веб-интерфейс, который автоматически обновляет и запускает традиционные тесты Go, а также тесты GoConvey (основанные на поведении и более самостоятельные). -документация, чем традиционные тесты Go).
Ответ 3
Построенный на VonC ответ,
Для тех из вас, кто любит хранить свои тесты в подпапке, скажем test
, затем запустите
go test ./...
будет пытаться запустить тесты в каждой папке, даже в тех, которые не содержат тестов, таким образом, имея ?
в последующем отчете для не тестовых папок.
Бег
go test ./.../test
вместо этого он будет нацелен только на ваши test
папки, поэтому чистый отчет будет сосредоточен только на ваших test
папках.
Ответ 4
Обычно я не тестирую, но вы можете сгруппировать файл в директории и использовать импорт, например
import "./models"
, если это один уровень из
import "../models
если один уровень и один уровень в
Например, для:
./models/todo.go
./test/todo_test.go
для проверки todo.go
от todo_test.go
,
ваш импорт в todo_test.go
будет
import "../models"
Ответ 5
Попробуйте использовать следующий репозиторий github.
https://github.com/appleboy/golang-testing
Вы можете загрузить тестирование golang script.
$ curl -fsSL https://raw.githubusercontent.com/appleboy/golang-testing/master/coverage.sh /usr/local/bin/coverage
$ chmod +x /usr/local/bin/coverage