2015-12-08 14 views
6

Szukam najlepszych praktyk, których powinienem użyć, jeśli chodzi o testowanie z Golang przy użyciu plików lokalnych.Testowanie golang przy użyciu plików lokalnych

Korzystając z plików lokalnych, mam na myśli to, że w celu przetestowania funkcjonalności aplikacja potrzebuje pewnych plików lokalnych, ponieważ aplikacja często odczytuje te pliki.

Nie jestem pewien, czy powinienem sam napisać pliki tymczasowe tuż przed uruchomieniem testów za pomocą funkcji tempdir i tempfile pakietu ioutil, lub utworzyć folder testowy taki jak ten;

testing/...test_files_here 
main.go 
main_test.go 

a następnie odczytać z treści wewnątrz

testing/... 

Dzięki

+11

Folder o nazwie 'testdata' jest zwykle używany do tego celu, ponieważ jest ignorowane przez narzędzie Go (zobacz' iść pakietów pomocy ') – Volker

+0

Ah tak, widzę to. „Katalog i nazwy plików rozpoczynające się od”.”Lub«_»są ignorowane przez narzędzie odejść, ponieważ są katalogi o nazwie«testdata» Nie zauważyć, że. Dziękuję – Miller

+2

Trzeba przyznać, że jest leniwe podejście , ale umieszczam moje dane testowe tuż obok plików "* _test.go": Łatwy dostęp, łatwe do znalezienia i nie mam nic przeciwko jemu. Inną opcją byłoby użycie '// go: generate' i [ go-bindata] (https://github.com/jteeuwen/go-bindata) przed utworzeniem dist. –

Odpowiedz

2

To moja obecna konfiguracja testu:

app/ 
    main.go 
    main_test.go 
    main_testdata 

    package1/ 
    package1.go 
    package1_test.go 
    package1_testdata1 

    package2/ 
    package2.go 
    package2_test.go 
    package2_testdata1 

Wszystkie dane test, który jest specyficzny dla pojedynczego pakietu, jest umieszczony w katalogu tego pakietu. Wspólne dane testowe, które będą używane przez wiele pakietów, są umieszczane w katalogu głównym aplikacji lub w $HOME.

Ta konfiguracja działa dla mnie. Jest łatwe do zmiany danych i test, bez konieczności wykonywania dodatkowych wpisując:

vim package1_test_data1; go test app/package1

1

Folder o nazwie testdata jest zwykle używany do tego celu, ponieważ jest ignorowane przez narzędzie Go (patrz iść pakiety pomóc) .

Powiązane problemy