有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何使用GoGoestEST测试在Android上调用java的C++代码?

我正在研究一个相当复杂的C++库,我计划使用GooGestEt对Android NDK进行正确的测试。p>

到目前为止,我遵循google测试示例,并按照如下方式构建项目:

安卓。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调用。我如何运行一个完整的APK文件,它不仅用C++代码,还包括java和资源?p>

共 (1) 个答案

  1. # 1 楼答案

    在测试程序中,您将有一个main()函数,该函数如下所示:

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

    这允许您像调用任何其他程序一样调用测试程序:只需在shell中键入可执行文件的名称

    更多有关:

    https://github.com/google/googletest