Chcę utworzyć pakiet w Go z testami i przykładami dla pakietu jako podkatalogami, aby zachować czystość obszaru roboczego. Czy to możliwe, a jeśli tak, to w jaki sposób?
Cała dokumentacja zawsze umieszcza kod testowy w tym samym miejscu co inny kod, czy jest to lepsze w jakiś sposób, czy po prostu w konwencji?
go test ./...
uruchomi testy na bieżącym folderze i wszystkich podfolderach. Zobacz moją odpowiedź poniżejOdpowiedzi:
Zauważ, że możesz uruchamiać
go test
"rekurencyjnie": musisz wypisać wszystkie pakiety, które chcesz przetestować .Jeśli jesteś w folderze głównym projektu Go, wpisz:
./...
Notację „ ” opisano w sekcji „ Opis list pakietów ” poleceniago
„ polecenie ”:Jeśli przechowujesz
_test.go
pliki w podfolderze, polecenie „go test ./...
” będzie mogło je pobrać.Ale:
Biorąc to pod uwagę, nadal wolałbym trzymać
_test.go
plik tuż obok głównego pliku źródłowego: łatwiej go znaleźć.źródło
Umieść testy wraz z kodem w tym samym katalogu w pliku o nazwie,
file_test.go
gdzie „plik” to nazwa testowanego pliku kodu źródłowego. To jest konwencja i z własnego doświadczenia stwierdziłem, że jest najlepsza.Jeśli
go test
narzędzie nie jest wystarczająco zautomatyzowane, możesz zajrzeć do GoConvey , który ma interfejs sieciowy, który automatycznie aktualizuje i uruchamia tradycyjne testy Go, a także testy GoConvey (które są oparte na zachowaniu i są bardziej samodokumentujące niż tradycyjne testy Go).źródło
go test
może również działać dla podfolderów. Zobacz moją odpowiedź poniżejEDYTOWANE
Zbudowany na odpowiedzi VonC,
Ta odpowiedź jest ważna w
go1.11
. Nie testowano jeszcze w wyższychgo
wersjach.Dla tych z Was, którzy lubią trzymać swoje testy w podfolderze, powiedzmy
test
, a potem uruchomionespróbuje uruchomić testy w każdym folderze, nawet w tych, które nie zawierają żadnego testu, mając tym samym
?
w kolejnym raporcie dla folderów innych niż testowe.Bieganie
zamiast tego będzie kierować tylko na twoje
test
foldery, dzięki czemu czysty raport będzie koncentrował się tylko na folderach testów.UWAGA
Należy pamiętać, że korzystanie z podfolderów testowych uniemożliwi obliczenie raportu pokrycia. Filozofia go polega na pozostawieniu plików testowych w folderach pakietów.
źródło
go test ./.../test
zwracago: warning: "./.../test" matched no packages
// nie tylko kieruje na foldery testowe. wersja go go1.13 darwin / amd64Zwykle nie testuję, ale możesz pogrupować plik w katalogi i użyć funkcji importu
import "./models"
jeśli jest jeden poziom na zewnątrz,import "../models
jeśli jest jeden poziom na zewnątrz i jeden poziom na zewnątrzNa przykład dla:
./models/todo.go
./test/todo_test.go
do testu
todo.go
ztodo_test.go
, importowanie wtodo_test.go
będzieimport "../models"
źródło