CUnitを組み込んでみる

NativeのアプリやライブラリのユニットテストAndroid環境下でやりたい。と、何となく思い立ったので調査してみた。
Androidには標準でEmbedded Unitが含まれているから、意味はないのかもしれないが…でも調べてみた。
日本語ではほとんど資料が見つからなかったので、ここに記しておく。
といっても、まだmakeまでしかやってない。実際にテストアプリを作ってはいないので、本当にこの方法でいいのかは未調査。
CppUnitの方は、何故かビルドできなくて困ってる。誰か助けて欲しい…

CUnitのソースをダウンロードする

SourceForgeからダウンロードする (現時点での最新版は 2.1-2)
http://sourceforge.net/projects/cunit/

Androidでビルドする

ここでは、外部ライブラリ"libcunit"としてコンパイルされるようにする。

  1. externalに"libcunit"ディレクトリを作成する
  2. ダウンロードしたファイルを展開し、CUnitディレクトリ内にあるHeaders, Sourcesディレクトリを丸ごとexternal/libcunitディレクトリにコピーする
  3. external/libcunitディレクトリに、Android.mkを作成する
    Android.mkの中身は、下記のように書けばよし。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

# the output modul name
LOCAL_MODULE := libcunit

# No prelinking of the lib
LOCAL_PRELINK_MODULE := false

# the src files that will be build in the lib
LOCAL_SRC_FILES := \
    Sources/Basic/Basic.c \
    Sources/Framework/CUError.c \
    Sources/Framework/MyMem.c \
    Sources/Framework/TestDB.c \
    Sources/Framework/TestRun.c \
    Sources/Framework/Util.c \
    Sources/Automated/Automated.c \
    Sources/Console/Console.c

# the header files 
LOCAL_C_INCLUDES :=$(LOCAL_PATH)/Headers

# other shared libs that this lib will use
LOCAL_SHARED_LIBRARIES := libcutils libc

# add rules for building shared lib
include $(BUILD_SHARED_LIBRARY)

以上でビルド可能になるはず。

CUnitを使用する

CUnitを使用したいアプリのAndroid.mkでインクルードディレクトリとライブラリの指定を行えばよい。

LOCAL_C_INCLUDES += external/libcunit/Headers
LOCAL_SHARED_LIBRARIES += libcunit