2013-08-08 24 views
15

Jak uruchomić testy jednostkowe w Android kodu natywnego (Język C/C++, Java nie)? Jak dotąd znalazłem tylko podobne pytanie, a odpowiedź brzmi: używaj junit z JNI, którego nie chcę robić (dodawanie wywołań JNI wydaje się niepotrzebnie skomplikowane dla testów jednostkowych i tak naprawdę nie jest testem jednostkowym natywnego kodu tak czy inaczej).Testy jednostkowe na Android NDK

Czy CppUnit (także sugerowane tam) naprawdę działa na systemie Android? Zauważ, że chcę, aby testy były uruchamiane natywnie na urządzeniu, a nie na środowisku programowania hosta. This wygląda jak port Android, czy warto na niego patrzeć?

oficjalny system testowania Google jak googletest byłby idealny, ale to nie wydają się działać z NDK.

Odpowiedz

11

używam googletest przez NDK Używam $ (połączenia Import-Module wnieść w głównej .so i potem mieć pojedynczy plik wykonywalny, który wygląda jak

int main(int argc, char *argv[]) 
{ 
#if RUN_GTEST 
    INIT_GTESTS(&argc,(char**)argv); 
    RUN_ALL_GTESTS(); 
#endif 
} 

a potem budować że z BUILD_EXECUTABLE, wdrożyć go lubię:

find libs/ -type f -print -exec adb push {} /data/local/tmp \; 

i uruchomić go jak

adb shell LD_LIBRARY_PATH=/data/local/tmp:/vendor/lib:/system/lib /data/local/tmp/gtest 

Więc to robi” t przetestuj cykl życia aplikacji, ale testuje wszystkie testy jednostkowe.

Gdybym musiał przetestować coś z UI mógłby zrobić coś podobnego, ale uczynić to, co teraz jest „głównym” rodem funkcji i wywołać ją, gdy działalność jest załadowany.

+0

Dzięki! Sprawdzimy to. Nie zdawałem sobie sprawy, że możesz również tworzyć pliki wykonywalne. – Indivara

+0

Możesz także utworzyć i połączyć gtest_main.cc. – PSyton

+0

Załóżmy, że chcę rzeczywiście używać wywołań JNI, jak mogę uzyskać lub utworzyć JavaVM *? – syvex