2017-01-20 16 views
11

Pracuję nad dość skomplikowaną biblioteką C++, którą zamierzam przetestować poprawnie przy użyciu googletest dla Androida NDK.Jak używać googletest do testowania kodu C++, który wywołuje java na Androidzie?

tej pory śledzę Przykład testowy google i struktura projektu takiego:

Android.mk:

LOCAL_PATH := $(call my-dir) 

    include $(CLEAR_VARS) 
    LOCAL_MODULE := foo 
    LOCAL_SRC_FILES := foo.cpp 
    include $(BUILD_SHARED_LIBRARY) 

    include $(CLEAR_VARS) 
    LOCAL_MODULE := foo_unittest 
    LOCAL_SRC_FILES := foo_unittest.cpp 
    LOCAL_SHARED_LIBRARIES := foo 
    LOCAL_STATIC_LIBRARIES := googletest_main 
    include $(BUILD_EXECUTABLE) 

    $(call import-module,third_party/googletest) 

buduję i wywołać test za pomocą pliku skryptu:

adb push libs/armeabi/libfoo.so //data/local/tmp/ 
adb push libs/armeabi/libgnustl_shared.so //data/local/tmp/ 
adb push libs/armeabi/foo_unittest //data/local/tmp/ 
adb shell chmod 775 //data/local/tmp/foo_unittest 
adb shell "LD_LIBRARY_PATH=//data/local/tmp //data/local/tmp/foo_unittest" 

To działa dobrze z każdym czystym C++, który nie ma wielu odniesień, ale wiele mojego kodu faktycznie opiera się na wywoływaniach java/jni. Jak mogę uruchomić googletest przy użyciu pełnego pliku apk, który pochodzi nie tylko z kodu C++, ale także java i zasobów?

Odpowiedz

2

Wewnątrz programu testowego, trzeba będzie main() funkcja, która wygląda mniej więcej tak:

int main(int argc, char **argv) { 
    ::testing::InitGoogleTest(&argc, argv); 
    return RUN_ALL_TESTS(); 
} 

To pozwala wywołać program testowy jak każdy inny: po prostu wpisz nazwę pliku wykonywalnego w jak diabli.

Więcej informacji na:

https://github.com/google/googletest

+0

ale jak chciałbym połączyć to z apk? – Luz

+0

Możesz utworzyć wywołanie zwrotne w Javie, a następnie wywołać je z JNI, aby zainstalować pobrany pakiet. – Shobhit

Powiązane problemy