Il mio progetto-struttura
stuff/stuff.go -> package: stuff
test/stuff/stuff_test.go -> package: test
Anche se stuff_test esegue il codice da stuff.go mostra
coverage: 0.0% of statements
ho usato go test -cover
Se muovo il * _test.go alla roba cartella del programma sta funzionando bene.
O forse il mio approccio alla struttura del progetto non è ben progettato/go-conform?Come rilevare la copertura del codice delle cartelle separate in GO?
risposta
copertura di test cross-pacchetto non è supportato direttamente, ma diverse persone hanno costruito involucri di unire i profili di copertura individuali.
Vedere Issue #6909 per la lunga storia su questo. E vedi gotestcover per uno strumento di esempio per l'unione. C'è anche gocovmerge. Ho costruito la mia versione, quindi non ho provato nessuno di questi, ma sono sicuro che tutti funzionano come i miei, e il mio funziona bene.
La mia sensazione è che questo è solo un problema per il quale nessuno ha scritto una lista di cambiamenti davvero convincente, e non è stato così importante per i manutentori principali, quindi non è stato affrontato. Solleva piccoli casi d'angolo che potrebbero interrompere i test esistenti, quindi gli hack rapidi che funzionano per la maggior parte di noi non sono stati accettati così com'è. Ma non ho visto nessuna discussione che suggerisca ai manutentori principali di opporsi attivamente a questa funzione.
La struttura del programma Go convenzionale mantiene i test con il pacchetto. Come questo:
project
|-stuff
|--stuff.go
|--stuff_test.go
Nella parte superiore dei file di test è ancora dichiara package stuff
, ed è necessario che i tuoi metodi di test assumono la forma TestMethodX
se si desidera go test
loro esecuzione automatica.
docs vedere andare per ulteriori informazioni: https://golang.org/pkg/testing/
Puoi pubblicare un link per il tuo strumento, Rob? –
@ Rick-777 Il mio è uno strumento interno che è integrato con il nostro sistema di build (con percorsi e logica hardcoded). Ho pensato di renderlo generico e di pubblicarlo; non sarebbe tanto lavoro. Ma ci sono già altri buoni strumenti in questo spazio, quindi non c'è davvero molto bisogno di un altro ancora. –