2014-05-01 8 views
5

Sono alla ricerca di strumenti o soluzioni per il test del codice sorgente JNI dell'unità. Finora il mio carrello di ricerca non ha trovato alcuna soluzione per il codice JNI di test unitario.Come testare l'unità sorgente JNI?

L'opzione che ho è di scrivere il test dell'unità in java e effettuare le chiamate native, verificare il valore restituito. Il problema qui è che non sarò in grado di ottenere un rapporto sulla copertura del codice. E le chiamate all'implementazione nativa fanno, dovranno essere prese in giro o supportate da un'implementazione nativa con stub.

codice di prova Java (chiamate) ---> Native implementazione in DLL (JNI) ---> deriso/contuso codice C++

prega di condividere, se ci sono soluzioni disponibili.

risposta

1

Non ci sono davvero strumenti completi per creare e testare automaticamente il codice JNI. Quello che provo e faccio è creare una libreria nativa indipendente che possa testare unitamente a qualcosa come MinUnit da un sistema di compilazione come Automake. Il mio effettivo codice dipendente da JNI viene quindi compilato dopo il mio codice Java da Ant utilizzando alcune attività personalizzate che ho creato chiamato JNITasks e quindi testato tramite JUnit nello stesso modo in cui si testerebbe qualsiasi altra classe Java.

Non credo che sarà possibile ottenere un report di copertura del codice nativo per il codice nativo tramite JUnit. Cerco di mantenere il layer JNI il più sottile possibile gestendo solo ciò che è necessario per tradurre l'input Java in qualcosa che la libreria nativa può comprendere e viceversa. Questo dovrebbe mantenere il tuo test di JUnit abbastanza semplice per i metodi nativi. Tutti i test complessi nativi dovrebbero avvenire dopo aver compilato la libreria di supporto, indipendentemente da JUnit. Forse riuscirai a ottenere un rapporto sulla copertura del codice dal framework di test nativo che decidi di utilizzare.