2011-12-14 14 views
5

Ho ereditato un enorme codice di C++ con alcuni test di integrazione. Questo è un sistema critico che alimenta i dati a molti sistemi a valle. Poiché i test sono molto inaffidabili, il nostro team non è in grado di spingere i cambiamenti con sicurezza.Test unitario codice C++ utilizzando Java

Vogliamo introdurre alcuni test nel sistema ma la maggior parte degli sviluppatori ha uno sfondo Java. Quali opzioni abbiamo?

1) Imparare C++

2) Uso JNI: Non sono sicuro quanto facile che sia

+1

Per la cronologia: 1 è un sottoinsieme di 2. Imparerai C++ indipendentemente da cosa. –

+0

3) poiché si tratta di test di integrazione, è possibile chiamare il codice C++ come processo separato, alimentarlo con i dati di test e vedere cosa emette – Thilo

+0

Hai mai pensato di utilizzare JNA? È più lento di JNI, ma puoi chiamare il metodo C++ senza scrivere alcun codice C++. –

risposta

2

Utilizzando JNI aggiunge un ulteriore livello di complessità e ancora si sarà imparare il C++ - non voglio raccomandare se non vuoi usare C++.

A seconda del sistema C++, è possibile scegliere diverse strategie di test. Nella mia esperienza ho avuto un sistema che era responsabile per l'elaborazione dei dati e tutti i dati sono stati inviati tramite rete. In questo caso i test sono stati fatti in pitone:

  1. abbiamo controllato il protocollo
  2. abbiamo controllato la validità dei dati elaborati in un certo ingresso (controllato anche in pitone)

Il mio caso era un fortunato uno poiché la comunicazione è stata fatta tramite una connessione di rete (potremmo letteralmente usare qualsiasi lingua volessimo).

Se non si può usare altro che C++, penso che lo si dovrà fare in C++ (e non in Java + JNI + C++).

+0

Non sono fortunato :( – NRS

0

Ti suggerisco di provare JNA che non richiede di scrivere codice C o C++. È più lento di JNI, ma per i test che è improbabile che contino.