Io uso istanbul per la copertura del codice dei test delle unità in un progetto angularjs. Esistono 4 tipi di copertura e sono di tipo statement, branch, function e line coverage. L'affermazione, la funzione e la linea vanno bene, ma non capisco cosa sia "ramo". Qualcuno potrebbe spiegare quale ramo è? GrazieChe cos'è un ramo nella copertura del codice per i test delle unità javascript
risposta
Da qualche parte dove il codice può richiedere più di un percorso, ovvero rami. Un paio di esempi di dichiarazioni di diramazione sono dichiarazioni if
/else
e switch
.
Tracce di copertura della diramazione quali di questi rami sono stati eseguiti in modo da poter garantire che tutti i percorsi siano stati testati correttamente.
Da Wikipedia:
Has ogni ramo (chiamato anche DD-percorso) per ogni struttura di controllo (ad esempio se e istruzioni case) state eseguite? Ad esempio, data un'istruzione if, sono stati eseguiti entrambi i rami true e false? Un altro modo per dirlo è che sono stati eseguiti tutti gli aspetti del programma?
È necessario testare per ogni struttura di controllo tutti i possibili casi (immettere/non immettere se dichiarazioni, ad esempio, e tutti i casi di un interruttore). La copertura della filiale è una metrica che misura (di solito in percentuale) il numero totale di rami coperti dai test.
Un ramo è dove il runtime può scegliere se può prendere un percorso o l'altro. Consente di prendere il seguente esempio:
if(a) {
Foo();
}
if(b) {
Bar();
}
Yay();
Quando si raggiunge la prima linea, si può decidere se si vuole andare all'interno del corpo del if(a)
-affermazione. Inoltre, può decidere di non farlo. In questa fase, abbiamo già visto due percorsi (un ramo).
La prossima affermazione dopo diventa più interessante. Può andare all'interno del corpo if
ed eseguire Bar
. Può anche non farlo. Ma ricorda che abbiamo già avuto una filiale prima. Il risultato può variare se è stato chiamato o meno Foo
.
Così finiamo con quattro possibili percorsi:
- Non chiamare
Foo
, non chiamareBar
né - Calling
Foo
, non chiamareBar
- Non chiamare
Foo
, chiamandoBar
- Calling sia
Foo
eBar
L'ultimo Yay
viene sempre eseguito, non importa se Foo
o Bar
è stato chiamato, in modo che non contenga come un ramo. Quindi il frammento di codice sopra contiene quattro percorsi/due rami.
Come già indicato in altre risposte, esistono numerose dichiarazioni che possono causare una diramazione (if
/switch
). Non dimenticare cicli condizionali, come ad esempio while
/for
/do-while
.
Lo strumento di copertura del codice desidera assicurarsi di aver verificato tutti i rami. La cosa migliore sarebbe se tutti i percorsi fossero stati testati, non solo i rami. Questo, per assicurarsi che non venga eseguito alcun comportamento indesiderato.
- 1. Test unità Elm e copertura del codice
- 2. Copertura del codice per i test (manuali) delle persone?
- 3. Copertura test unità Python
- 4. Test unità distribuito e copertura del codice in Python
- 5. Copertura del codice JavaScript con Jasmine
- 6. Unità test stile codice javascript
- 7. SpecFlow/BDD per i test delle unità?
- 8. Codice unità client di test delle unità di gestione
- 9. Global.asax per i test delle unità?
- 10. google-test: copertura del codice
- 11. Manipolazione del file app.config per i test delle unità
- 12. Copertura del codice per i metodi asincroni
- 13. I contratti di codice aiutano davvero i test delle unità?
- 14. Copertura del codice per i modelli Jinja2
- 15. iPhone - Recupero delle risorse per i test delle unità logiche
- 16. Test delle unità javascript per una perdita di memoria
- 17. Java - Copertura del codice
- 18. automake: esegue automaticamente i test delle unità
- 19. Test unità sandbox Javascript
- 20. Algoritmi di approssimazione del test delle unità
- 21. C'è un modo per disabilitare la copertura del codice in PHPUnit per un singolo test?
- 22. Buoni modi per visualizzare i risultati della copertura del codice
- 23. Valori di copertura del codice/copertura consigliata valori
- 24. Server HTTP per i test delle unità in Delphi
- 25. File di dati esterni per i test delle unità
- 26. Test di copertura del codice in Visual Studio 2010? Come?
- 27. Utilizzo delle informazioni sulle applicazioni con i test delle unità?
- 28. copertura del codice finally
- 29. Test delle unità in PHP?
- 30. Copertura del codice per i modelli jinja2 in Django
Grazie per la risposta dettagliata. –