2014-04-24 26 views
6

Mam opakowanie JNI systemu Android dla niektórych kodu C++. Kod C++ ma własny zestaw testów jednostkowych.
Chcę napisać testy jednostek Java dla klasy opakowania JNI.Testowanie jednostek Połączenia JNI

Czy istnieje metoda testowania jednostkowego interfejsu API systemu Android JNI .so z poziomu konsoli pulpitu, np. w systemie Windows? Może przy użyciu architektury Java na komputer, ale ze wszystkimi wywołaniami zestawu Android SDK?

Odpowiedz

1

Ponieważ klasa wywołująca natywne jest tylko klasą opakowania, można po prostu przetestować warstwę JNI. Jeśli tego chcesz, trudno będzie bezpośrednio przetestować funkcje JNI. Jednak nadal możesz wziąć "rdzeń" funkcji JNI, która wykonuje całą pracę i umieścić ją w osobnym pliku .c. Zasadniczo, włączysz swoją nową klasę do klasy JNI i sprawisz, że ta klasa zrobi wszystko, co w jej mocy. Teraz będziesz miał klasę .c z zestawem metod, które mogą być łatwo testowane jednostkowo.

Nadzieję, że pomaga!

+1

Tak, to może być dobra metoda i jest bardzo wydajna, ale ważne jest, aby mieć świadomość, że różne platformy i biblioteki C zachowują się w subtelny sposób - na przykład subtelne błędy mogą występować inaczej w 32-bitowym systemie Android niż po zbudowaniu dla (zazwyczaj) 64-bitowego hosta programistycznego - niekoniecznie będzie wychwytywał ryzykowne założenia dotyczące zachowania definiowanego przez implementację. –

+0

Jak już powiedziałem w pytaniu, kod C++ ma już własne testy jednostkowe, podobnie jak opakowanie C dla API C++. Tym, co chcę UT, jest kod JNI, który często ma specyficzne dla platformy konwersje danych, które nie mogą być naprawdę przeniesione lub wyizolowane na natywną C. –