Google Testを使う

AndroidのNativeアプリやライブラリで、C++で書いたもののユニットテストGoogle Testを使用することになる。
使用にあたって、STLのライブラリをリンクする必要がある。幸い、Android 2.2以降はSTLportがついている。
これをリンクすればいい… と思いきや、事はそう単純でもないようだ。

どうやら以前からastlというSTLもどきが存在するのだが、こいつをビルドするかどうかで設定を変えなければいけないらしい。

その辺の設定を行ってるAndroid.mkは、こんな感じになる。

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := tests

ifeq ($(BUILD_WITH_ASTL),true)
  libgtest_test_includes := bionic/libstdc++/include external/astl/include
  libgtest_test_static_lib := libgtest_main libgtest libastl
  libgtest_test_shared_lib := 
  libgtest_test_host_static_lib := libgtest_main_host libgtest_host libastl_host
  libgtest_test_host_shared_lib := 
else
  BUILD_WITH_ASTL := false
  libgtest_test_includes := bionic external/stlport/stlport
  libgtest_test_static_lib := libgtest_main libgtest
  libgtest_test_shared_lib := libstlport
  libgtest_test_host_static_lib := 
  libgtest_test_host_shared_lib := 
endif

LOCAL_C_INCLUDES := external/gtest/include $(libgtest_test_includes)

LOCAL_SHARED_LIBRARIES := \
    libcutils \
    libutils \
    libandroid_runtime \
    $(libgtest_test_shared_lib) \
    $(libgtest_test_host_shared_lib)

LOCAL_STATIC_LIBRARIES := \
    $(libgtest_test_static_lib) \
    $(libgtest_test_host_static_lib)

LOCAL_SRC_FILES := \
    sample.cpp

LOCAL_MODULE := gtest_sample

include $(BUILD_EXECUTABLE)

実装については、他のサイトで解説とかあるだろうし、ここでは割愛。
下記を参照すれば大抵わかるのではなかろうか。
http://opencv.jp/googletestdocs/samples.html