Sono curioso di capire in che modo Java testa le sue API. Diciamo che sono interessato alla classe ConcurrentHashMap, ci saranno dei test unitari per questa classe? Se è così, è disponibile per il pubblico?Test unità e codice sorgente per le classi Java
risposta
Qualsiasi classe racchiusa in jdk come ConcurrentHashMap è stata testata e non è necessario preoccuparsi di quasi tutti i casi. Se si implementano interfacce ben definite, sono disponibili casi di test che possono essere eseguiti contro la propria API e verificare se sia compatibile. Inoltre, se si definisce una nuova API che si esporrà, è necessario scrivere i casi di test utilizzando JUnit o TestNg. Qui lo scopo dei casi di test deve essere controllare se l'API fornisce i risultati previsti. Se si copre tutta la combinazione dell'utilizzo dell'API, è possibile identificare quando si verifica una regressione.
Offtopic: test di integrazione supponiamo di testare l'intero progetto quando tutti i componenti sono integrati.
[Aggiornamento] Se è davvero necessario testare ConcurrentHashMap è possibile utilizzare un progetto di esempio che utilizza ConcurrentHashMap, tenere presente che è meglio scegliere il progetto multi-thread.
Quando si dice "Java" probabilmente dire la Java Development Kit (JDK), che si presenta come OracleJDK e OpenJDK (OracleJDK è essenzialmente OpenJDK con a few extras). OpenJDK è open-source; e il codice sorgente per tutti i suoi progetti si possono trovare qui:
In particolare, qui è una versione sfogliabile della directory del progetto jdk7.
sono curioso di capire come Java mette alla prova le sue API. Diciamo che sono interessato alla classe ConcurrentHashMap, ci saranno dei test unitari per questa classe? Se è così, è disponibile per il pubblico?
Sì, per un elenco di tutti i test jdk7 guardare in jdk7/jdk/test.
Se siete interessati a ConcurrentHashMap
test, guardare in jdk7/jdk/test/java/util/concurrent/ConcurrentHashMap:
NOTA: I test JDK possono sembrare un po 'scomodo perché non usa JUnit, utilizza JTreg.
Probabilmente non sarà possibile ottenere il codice sorgente (e quindi il codice di test) per Oracle Java. Tuttavia, dal momento che OpenJDK segue teoricamente le stesse specifiche per il comportamento di Oracle Java (almeno per tutte le parti di esso che mi sono familiari), potresti forse usare i loro test unitari per testare la tua libreria. La fonte per OpenJDK jdk8
può essere sfogliata here (vedere la directory test
per i test), e puoi trovare altre versioni di java nella loro pagina principale.
Tuttavia, come fa notare Erranda, è necessario chiedersi se si desidera testare le librerie esistenti. Probabilmente sono testati più a fondo di qualsiasi cosa finirai per scrivere e, a meno che non vogliate ricompilare Java dal sorgente dopo aver trovato un problema (che potrebbe portare a problemi di compatibilità), a cosa serve trovare un bug nelle librerie?
- 1. Codice sorgente per le classi di libreria Java
- 2. Test unità Elm e copertura del codice
- 3. due classi, richiamata e unità di test
- 4. Dove sono i test unitari per le classi Java "native"?
- 5. Test unità di base e test unità
- 6. Percorsi classe separati per codice test e codice principale
- 7. Unità test stile codice javascript
- 8. Test delle unità Classi astratte in Groovy
- 9. Unità di test classi astratte e/o interfacce
- 10. Test unità Java, layout di directory
- 11. Esegui test unità Tensorflow
- 12. Dove è implementato `+` per le stringhe nel codice sorgente Java?
- 13. Test unità JUnit e Clojure
- 14. Codice unità client di test delle unità di gestione
- 15. Generazione codice sorgente Java Maven per Hibernate
- 16. Java - Process.destroy() codice sorgente per Linux
- 17. BDD E Test unità
- 18. Singleton e unità di test
- 19. Test unità separati e test di integrazione
- 20. Condivisione di codice tra test di strumentazione Android e test di unità in Android Studio
- 21. Come simulare le classi di dipendenza per il test delle unità con mocha.js?
- 22. Approccio unità-test preferito per le funzioni Postgresql?
- 23. Test unità distribuito e copertura del codice in Python
- 24. Codice Java: ricerca del codice sorgente
- 25. Codice byte al codice sorgente Java
- 26. Test di unità a sorgente singola per Free Pascal e Delphi
- 27. Esegui test unità in IntelliJ con errori nelle classi
- 28. Qt: esegui test di unità da più classi di test e riepiloga l'output di tutti loro
- 29. Test di unità per un evento utilizzando le estensioni reattive
- 30. Test di integrazione e unità
Quale implementazione di Java intendi? Se intendi OpenJDK, sospetto che tu possa trovarli (c'è una directory 'test' nella loro origine su http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d). Se intendi Oracle di Java, dubito che avrai così tanta fortuna. – childofsoong
Non sono sicuro del motivo per cui si desidera eseguire i test unitari su una classe all'interno delle librerie della piattaforma. Parte del motivo per cui esistono librerie di piattaforme è che avrai un set di classi di utilità che sono già state testate per te. Molte delle classi di biblioteca hanno più ore di sviluppo e di test di quelle che potresti permetterti di spendere in qualsiasi classe tu stesso. – scottb
Intendo per Oracle's Java. Ma buono a sapersi sui test per open jdk. – dhanu05