2016-01-20 21 views
6

Provenendo dal mondo Python, le fixture sono molto utili (Fixtures definisce un contratto Python per la logica di supporto/stato riutilizzabile, principalmente per il test dell'unità). Mi stavo chiedendo se c'è un supporto simile in Golang che può permettermi di eseguire i miei test con alcuni dispositivi predefiniti come la configurazione del server, abbattendolo, eseguendo alcune attività ripetute ogni volta che viene eseguito un test? Qualcuno può indicarmi alcuni esempi di come fare lo stesso in Golang?Fixtures in Golang testing

+1

Partenza [Ginkgo] (https://onsi.github.io/ginkgo) che ha '' BeforeEach' e AfterEach'. – PieOhPah

+0

Grazie @ pie-o-pah – psbits

risposta

6

Se si desidera utilizzare gli strumenti di prova Go standard, è possibile definire una funzione con la firma TestMain(m *testing.M) e inserire il codice del dispositivo in tale posizione.

Dal testing package wiki:

A volte è necessario per un programma di test per fare l'installazione in più o teardown prima o dopo la prova. Talvolta è anche necessario che un test controlli quale codice gira sul thread principale. Per supportare questi ed altri casi, se un file di prova contiene una funzione:

func TestMain(m *testing.M)

allora il test generato chiamerà TestMain (m) invece di eseguire direttamente test. TestMain viene eseguito nella goroutine principale e può eseguire qualsiasi operazione di configurazione e smontaggio durante una chiamata a m.Run. Dovrebbe quindi chiamare os.Exit con il risultato di m.Run. Quando viene chiamato TestMain, flag.Parse non è stato eseguito. Se TestMain dipende da flag della riga di comando, inclusi quelli del pacchetto di test, dovrebbe chiamare flag.Parse in modo esplicito.

Una semplice implementazione di TestMain è:

func TestMain(m *testing.M) { 
    flag.Parse() 
    os.Exit(m.Run()) 
}