Come posso testare i metodi privati in Rust? Non ho trovato alcuna informazione al riguardo. Non ci sono informazioni nella documentazione.Come posso testare i metodi privati in Rust?
17
A
risposta
20
Quando si utilizza #[test]
, non c'è nulla di speciale nei metodi privati o pubblici: si scrive semplicemente perfettamente le funzioni normali che possono accedere a qualsiasi cosa a cui possono accedere.
fn private_function() {
}
#[test]
fn test_private_function() {
private_function()
}
test esterni, come ad esempio tests/*.rs
e examples/*.rs
se si sta utilizzando merci, o prove doc, non si ottiene l'accesso ai membri private; né dovrebbero: questi test sono progettati per essere test API pubblici, per non trattare i dettagli dell'implementazione.
Problemi correlati
- 1. Devo testare i metodi privati usando RSpec?
- 2. Come posso testare i miei metodi meteorologici?
- 3. Come posso testare i metodi in un oggetto metodo?
- 4. Come posso testare metodi void?
- 5. Posso usare i metodi di istanza privati come callback?
- 6. Rendi definitivi i metodi privati?
- 7. Rendi privati i metodi delegati
- 8. metodi privati in Ruby
- 9. Metodi privati su metodi pubblici
- 10. Metodi e campi privati
- 11. Perché i metodi "privati" nell'oggetto orientato?
- 12. Come imitare i metodi privati nel controller in grails 2.2.4
- 13. Prova i metodi privati e le classi interne con NUnit?
- 14. JVM e metodi privati
- 15. F # Metodi statici privati
- 16. Come posso utilizzare l'estensione Autodoc di Sphinx per metodi privati?
- 17. Come posso scaricare i documenti Rust API?
- 18. freccetta, unità di test metodi privati
- 19. Come testare i metodi di classe in RSPEC
- 20. Test delle unità e ambito degli oggetti: come testare metodi privati / interni ecc.?
- 21. Rendi privati i metodi di istanza in runtime
- 22. Sovrascrittura dei metodi privati in Java
- 23. Metodi privati in una classe Mootools
- 24. Perché OpenJDK inserisce metodi privati in vtable?
- 25. Java: come implementare metodi astratti privati?
- 26. Posso includere/estendere un modulo ma contrassegnare tutti i metodi inclusi/estesi come privati?
- 27. I metodi importati da Ruby sono sempre privati?
- 28. Come posso elencare i file di una directory in Rust?
- 29. Come testare i metodi del controller JERSEY con UriInfo
- 30. Come posso testare i controller di visualizzazione iOS dell'unità?
I test esterni devono assolutamente consentire l'accesso alle parti private, perché 1) Potrebbe essere necessario accedere a parti private per attivare in modo affidabile tutti i percorsi di codice tramite l'API pubblica. Ad esempio, potrebbe esserci una soglia interna che, una volta raggiunta, attiva un percorso di codice diverso. Potresti anche aver bisogno di un'iniezione fallita o di dettagli interni per attivare casi limite. 2) L'accesso alle parti private può fornire una diagnostica migliore per quando i test falliscono - è possibile inserire informazioni interne nel messaggio di panico ecc ... – kralyk
Diagnostics: questo è ciò che 'std :: fmt :: Debug' è per. Per il resto, sostengo la mia posizione secondo cui i test esterni non dovrebbero avere accesso ai dettagli privati. I test esterni non sono appropriati per la situazione che descrivi: ecco a cosa servono i test delle unità interne. –
'fmt :: Debug' è troppo voluminoso in alcune situazioni: ad esempio, potresti non voler stampare i dettagli di un'intera enorme struttura dati quando sei solo dopo un determinato bit. Ad ogni modo, è appropriato che il test interno configuri anche un caso di utilizzo realistico dell'API pubblica? Altrimenti, non lo farò, visto che ho bisogno di fare proprio questo. Se sì, allora va bene sono contento di tutto ciò e dei test interni, anche se a quel punto la distinzione è un po 'inutile? Il problema principale è che, indipendentemente da quanto ci provi, i dettagli dell'implementazione influenzano sempre l'interfaccia in qualche modo, non c'è modo di aggirarla. – kralyk