2015-12-08 18 views
6

Sto cercando le migliori pratiche che dovrei usare quando si tratta di testare con Golang usando i file locali.Test di Golang usando i file locali

Utilizzando i file locali, intendo che per testare la funzionalità, l'applicazione necessita di alcuni file locali, poiché l'applicazione legge spesso questi file.

Non sono sicuro di dover scrivere i file temporanei da solo prima di eseguire i test utilizzando le funzioni di tempdir e tempfile del pacchetto ioutil o creare una cartella di prova come questa;

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

e poi leggere dal contenuto all'interno

testing/... 

Grazie

+11

una cartella denominata 'testdata' è di solito utilizzato per questo scopo in quanto viene ignorato dallo strumento Go (si veda' andare pacchetti di aiuto ') – Volker

+0

Ah sì, lo vedo. "I nomi delle directory e dei file che iniziano con"." O '_' vengono ignorati dallo strumento Go, come vengono chiamati directory 'testdata' non aveva visto che. Grazie – Miller

+2

Certo, questo è l'approccio pigro , ma ho messo il mio testdata proprio accanto ai file '* _test.go': Facile da accedere, facile da trovare e non mi dispiace averli in giro.Un'altra opzione sarebbe usare' // go: generate' e [ go-bindata] (https://github.com/jteeuwen/go-bindata) prima di creare una dist. –

risposta

2

Questa è la mia attuale configurazione di prova:

app/ 
    main.go 
    main_test.go 
    main_testdata 

    package1/ 
    package1.go 
    package1_test.go 
    package1_testdata1 

    package2/ 
    package2.go 
    package2_test.go 
    package2_testdata1 

Tutti i dati di test che è specifico per un unico pacchetto, è collocato all'interno della directory di quel pacchetto. I dati di test comuni che verranno utilizzati da più pacchetti sono collocati nella root dell'applicazione o in $HOME.

Questo set up funziona per me. La sua facile cambiare i dati e di test, senza dover fare la digitazione in più:

vim package1_test_data1; go test app/package1

1

Un testdata cartella denominata viene di solito utilizzato per questo scopo in quanto viene ignorato dallo strumento go (vedi andare pacchetti di aiuto) .

Problemi correlati