Запуск тестов подпапок из корня проекта - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть проект с двоичным файлом, точка входа которого находится в ./cmd/<my-project>/main.go.Я добавил эталонный тест в ./cmd/<my-project>/main_test.go.

. Теперь я хочу выполнить этот эталонный тест из корня хранилища.Я пытался выполнить что-то вроде go test -bench=./cmd/<my-project>/main в различных вариантах (например, go test -bench=./cmd/<my-project>/main_test.go или go test -bench=./cmd/<my-project>), но я не смог заставить его работать.

Ошибка, которую я всегда получаю:

can't load package: package github.com/<username>/<my-project>: no Go files in /home/<user>/go/src/github.com/<username>/<my-project>

и это правда, у меня нет файлов *.go в корне моего проекта.

Все, что я придумал, - это сначала перейти в каталог и запуститьбенчмарк с `go test -bench =.

Однако, поскольку моя программа зависит от текущего рабочего каталога, а результат сильно зависит от того, было бы здорово иметь возможность выполнить ее в другом каталоге, чем cmd/<my-project> один.(Если это хорошо или нет, это не часть вопроса:))

Обновление после первого комментария:

Я запускаю его с go test -bench=. /cmd/<my-project>но бенчмарк get выполняется так, как если бы он выполнялся в каталоге ./cmd/<my-project>.Я заметил похожее поведение в «обычных тестах» - но это не было проблемой для меня в любое время.

Итак, моя программа сканирует текущий каталог на наличие файловых каталогов в зависимости от текущего рабочего каталога,это приводит только к двум найденным файлам (main.go и main_test.go), где тест не очень полезен.

1 Ответ

0 голосов
/ 27 ноября 2018

Итак, чтобы запустить тесты:

go test -bench=. ./cmd/<my-project>

Однако вы хотите управлять рабочим каталогом, так что вы действительно хотите запустить его из другого места.То, что вы ищете, это флаг -c.Это создаст двоичный файл вместо запуска тестов.Затем вы можете запустить двоичный файл (и, следовательно, свои тесты и тесты), где хотите.

go test -c ./cmd/my_proj
my_proj.test -test.bench=.

ПРИМЕЧАНИЕ : При компиляции тестов флаги имеют префикс test..

...