2015-07-30 12 views
5

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

+2

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

+0

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

+0

Intendo per Oracle's Java. Ma buono a sapersi sui test per open jdk. – dhanu05

risposta

0

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.

5

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:

http://hg.openjdk.java.net/

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.

0

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?

Problemi correlati