| This is a working copy of GoogleTest for the Android NDK. |
| |
| Project: https://code.google.com/p/googletest/ |
| Checkout: svn checkout http://googletest.googlecode.com/svn/trunk@653 |
| Patches: See patches.ndk/ |
| Licensing: 3-clause BSD. See googletest/LICENSE file. |
| |
| Note that the latest official release to date (1.6.0) doesn't work |
| too well with Android. This is based on a more recent revision that |
| includes many needed bugfixes. |
| |
| Usage: |
| ------ |
| |
| This directory contains several module definitions that can be imported |
| into your project by using the following at the end of your Android.mk: |
| |
| $(call import-module,third_party/googletest) |
| |
| The GoogleTest modules are the following: |
| |
| googletest_static: |
| GoogleTest as a static library. |
| |
| googletest_shared: |
| GoogleTest as a shared library. |
| |
| googletest_main: |
| A small helper static library that provides a main() implementation |
| that starts all the GoogleTest tests. This also links against |
| googletest_static. |
| |
| googletest_main_shared: |
| Same as googletest_main, but links against googletest_shared. |
| |
| In your source code, use #include <gtest/gtest.h> as usual after ensuring |
| your module depends on one of the modules above. |
| |
| Here's an fictuous example: |
| |
| 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) |
| |
| jni/Application.mk: |
| APP_STL := gnustl_shared |
| |
| jni/foo.cpp: |
| int foo(int x, int y) { |
| return x + y; |
| } |
| |
| jni/foo.h: |
| extern int foo(int x, int y); |
| |
| jni/foo_unittest.cc: |
| #include <gtest/gtest.h> |
| |
| #include "foo.h" |
| |
| TEST(FooTest,ZeroZero) { |
| EXPECT_EQ(0, foo(0, 0)); |
| } |
| |
| TEST(FooTest,OneOne) { |
| EXPECT_EQ(2, foo(1, 1)); |
| } |
| |
| Invoking 'ndk-build' will build both 'libfoo.so' and 'foo_unittest' under |
| $PROJECT/libs/$ABI/. After this, to run the unit test program push it to |
| the device and execute it with ADB, e.g.: |
| |
| 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" |
| |