【问题标题】:Googletest for Android NDK适用于 Android NDK 的 Googletest
【发布时间】:2014-03-30 03:04:47
【问题描述】:

我查看了先前关于 Android 单元测试的答案,其中建议 Googletest 为 good option。但是,我查看了 Google C++ 测试框架 - Googletest。关于平台,我没有看到任何提到对 Android 的支持。如果有某种方式可以在 Android 设备上使用它,有人可以告诉我们任何事情 - 例如构建工具链等的步骤?

【问题讨论】:

  • 在新的 NDK 中,您可以使用 cmake,因此现在更加简单:TARGET_LINK_LIBRARIES(${PROJECT_NAME} gtest)
  • @DawidDrozd 你可以使用target_link_libraries,但是没有构建gtest的脚本。你需要few more lines in CMakeLists.txt,不是吗?
  • 是的。我的意思是 gtest 已经有 CMakeLists 你只需要添加子目录

标签: android c++ unit-testing android-ndk tdd


【解决方案1】:

GoogleTest 现在与 NDK 一起分发(主要是因为它由 NDK 测试套件本身使用)。

在您自己的项目中使用它非常容易,请参阅 $NDK/sources/third_party/googletest/README.NDK 了解使用示例。

【讨论】:

  • 但似乎它是一个相当旧的(早于 1.6.0)。可能现在,获取源代码和构建是公认的答案中的正确方法。
【解决方案2】:

在使用交叉编译时,您需要为 Android 构建 Googletest,以便能够使用您的工具链运行它。

下载googletest源码

$ mkdir googletest
$ cd googletest
$ svn checkout http://googletest.googlecode.com/svn/trunk/ .

复制jni目录到googletest目录

$ cd /path/to/this/git
$ cp -r jni googletest/

运行 ndk-build 脚本

$ cd googletest/ $ ndk-build 

您可以在 googletest/obj/local/armeabi/libgtest.a 中找到 libgtest.a

来源:sfuku7 / googletest_android_ndk-build - github

【讨论】:

    【解决方案3】:

    jni/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)
    

    【讨论】:

      【解决方案4】:

      这个 gradle 插件 https://github.com/fsbarata/ndktest-plugin 将帮助您让 Googletest 正常工作。不过还是值得看看 Googletest 框架。

      【讨论】:

        猜你喜欢
        • 2017-09-16
        • 2014-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多