2011-12-14 28 views
5

Odziedziczyłem ogromną bazę kodową C++ z kilkoma testami integracyjnymi. Jest to krytyczny system, który przesyła dane do wielu systemów podrzędnych. Ponieważ testy są bardzo niewiarygodne, nasz zespół nie jest w stanie wprowadzać zmian w sposób pewny.Testowanie jednostkowe kodu C++ za pomocą Javy

Chcemy wprowadzić pewne testy w systemie, ale większość programistów ma tło Java. Jakie mamy opcje?

1) Dowiedz się C++

2) Wykorzystanie JNI: Nie wiesz, jak łatwo to

+1

Dla zapisu: 1 to podzbiór 2. Będziesz uczyć się języka C++ bez względu na wszystko. –

+0

3) skoro są to testy integracyjne, może wywołaj kod C++ jako oddzielny proces, podaj dane testowe i zobacz, co wypuszcza. – Thilo

+0

Czy rozważałeś użycie JNA? Jest wolniejszy niż JNI, ale możesz wywołać metodę C++ bez pisania kodu C++. –

Odpowiedz

2

Korzystanie JNI dodaje kolejną warstwę złożoności i nadal jesteś będzie uczyć się C++ - nie polecam go, jeśli nie chcesz używać C++.

W zależności od tego, co robi system C++, można wybrać różne strategie testowania. Z mojego doświadczenia wynika, że ​​miałem system odpowiedzialny za przetwarzanie danych, a wszystkie dane przesyłano przez sieć. W tym przypadku testy przeprowadzono w Pythonie:

  1. sprawdziliśmy protokół
  2. sprawdziliśmy przetwarzane ważności danych przedstawionych pewna wejścia (również kontrolowane w Pythonie)

Mój przypadek był szczęśliwy jeden od czasu, gdy komunikacja została nawiązana poprzez połączenie sieciowe (dosłownie możemy użyć dowolnego języka, jakiego chcieliśmy).

Jeśli nie możesz użyć niczego innego poza C++, myślę, że będziesz musiał to zrobić w C++ (a nie w Javie + JNI + C++).

+0

Nie mam szczęścia :( – NRS

0

Proponuję wypróbować JNA, która nie wymaga pisania kodu C lub C++. Jest wolniejszy niż JNI, ale w przypadku testów, które są mało prawdopodobne.

Powiązane problemy