java - 如何使用 googletest 测试在 android 上调用 java 的 C++ 代码?

标签 java android c++ android-ndk googletest

我正在开发一个相当复杂的 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 中键入可执行文件的名称。

更多信息:

https://github.com/google/googletest

关于java - 如何使用 googletest 测试在 android 上调用 java 的 C++ 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41759122/

相关文章:

java - 在google appengine后端仅运行一个后台线程

java - 如何限制 Java 应用程序关闭?

C++11 - 区分右值指针

c++ - node.js 的 v8 扩展 - 无法将 FunctionTemplate 设置为目标

c++ - 当大小增加时编译数组数组时崩溃

java - 在 JAXB 中编码时隐藏 XMLAttribute,而不将其设置为 null

Java 程序特化 - 它是什么?我不明白

android - 如何检查设备连接的 wifi 互联网连接速度?

android - 无法从包 androidx.camera.core 导入 PreviewConfig 类

java - 将 Android 上的语音命令列表限制为预定义的集合