Personalmente, per ogni pacchetto ho un file _test.go con diverse funzioni di test in (devono prendere la forma func TestX(t *testing.T)
). Ognuna di queste funzioni di test scorre tutte le mie funzioni regolari nel pacchetto, trasmettendo dati accettabili, dati estremi (dati sui limiti accettabili) e dati non validi (passando nil in, ecc.).
Quindi eseguo il test dei valori restituiti e utilizzo t.Log()
per stampare l'output utile. Se il tuo codice non si comporta come dovrebbe, puoi usare t.Fail()
per far fallire il test, o t.Errorf()
per registrare un messaggio di errore e poi fallire.
Una tecnica utile per mantenere più piccoli i file di test è avere un tipo di struttura chiamato testData
o qualcosa di simile, con un campo per:
- Un'istanza dei dati in cui passerai.
- Ogni valore di ritorno atteso da varie funzioni.
e una funzione che imposta e restituisce una porzione di dati di test inizializzati.
Devi quindi solo chiamare td := setupTestData()
e passare in rassegna ogni membro, passando e testando gli stessi campi.
Go dispone di strumenti utili per il test che includono lo strumento cover
molto utile. Apri il terminale o il prompt dei comandi nella directory del pacchetto e fai go tool cover -html="cover.out"
per vedere una rappresentazione visiva di quanto del tuo codice è coperto dal test.