我正在开发一个相当复杂的 C++ 库,我计划使用适用于 Android NDK 的 googletest 对其进行正确测试。
到目前为止,我按照 google 测试示例构建了这样的项目:
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)
我使用脚本文件构建和调用测试:
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"
这适用于任何没有很多引用的纯 C++ 代码,但我的很多代码实际上都依赖于 java/jni 调用。我如何使用不仅带有 C++ 代码而且还带有 java 和资源的完整 apk 文件运行 googletest?
最佳答案
在您的测试程序中,您将有一个 main() 函数,看起来像这样:
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
这允许您像调用任何其他程序一样调用测试程序:只需在 shell 中键入可执行文件的名称。
更多信息:
关于java - 如何使用 googletest 测试在 android 上调用 java 的 C++ 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41759122/