Тесты Голанга в подкаталоге - программирование
Подтвердить что ты не робот

Тесты Голанга в подкаталоге

Я хочу создать пакет в Go с тестами и примерами для пакета в качестве подкаталогов, чтобы сохранить рабочее пространство чище. Возможно ли это и если да, то как?

Вся документация всегда помещает код тестирования в то же место, что и другой код, это лучше в некотором роде или просто соглашение?

4b9b3361

Ответ 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