2014-06-26 9 views
7

Recentemente stavo leggendo su testing and examples nel framework di testing go e non capivo veramente a cosa servissero. Vedo che la documentazione dice:Qual è il punto di "esempi" nel framework di test go (golang)?

Il pacchetto esegue e verifica anche il codice di esempio. Le funzioni di esempio possono includere un commento di linea conclusivo che inizia con "Output:" e viene confrontato con l'output standard della funzione quando vengono eseguiti i test. (Il confronto ignora lo spazio iniziale e finale.)

Tuttavia, non apprezzo molto la ragione per cui ciò esisterebbe. Mentre scrivo i miei test, sembra che dovrebbe essere più che chiaro come usare il codice solo leggendo i test unitari ei benchmark. Quale ulteriore motivazione fornisce la sezione di esempio? A me sembra ridondante, tuttavia, sono sicuro che gli inventori di go lo abbiano messo per una buona ragione, specialmente perché sembrano enfatizzare la buona pratica di programmazione con il design della loro lingua. Spero di capire la loro motivazione o come questa parte della lingua possa essere usata in modo positivo in un progetto golang! :)

risposta

10

In Go, il codice sorgente viene anche utilizzato per generare documentazione. Gli esempi non sono pensati per il test ma piuttosto per la documentazione. Facendo degli esempi compilati, puoi assicurarti che funzionino correttamente per chiunque li usi.

Gli esempi trovati nelle librerie standard possono essere eseguiti direttamente nel browser quando si utilizza golang.org per sfogliare la documentazione. Godoc.org collega invece il codice di esempio direttamente a play.golang.org dove puoi provarlo.

A titolo di esempio o di utilizzo di esempio, vedere: http://golang.org/pkg/sort/

+2

Per aggiungere a questo, i test sono spesso astratti, testare API private e/o sono progettati per catturare i casi limite. Avere degli esempi indipendenti (ad esempio "questo è il modo in cui dovresti usare il mio pacchetto/API") lo rende molto più chiaro per l'utente del pacchetto invece di provare a mettere insieme i tuoi test API +. – elithrar