23

如何在 Android 原生代码(原生 C/C++,而不是Java)上运行单元测试?到目前为止,我只发现了一个类似的问题,答案说将 junit 与 JNI 一起使用,我不想这样做(添加 JNI 调用对于单元测试来说似乎不必要地复杂,并不是真正的本机代码的单元测试反正)。

CppUnit(也建议在那里)真的适用于Android吗?请注意,我希望测试在设备上本地运行,而不是在主机开发环境上。看起来像一个Android端口,值得一看吗?

像googletest这样的官方 Google 测试框架是理想的,但这似乎不适用于 NDK。

4

1 回答 1

18

我通过 NDK 使用 googletest 我使用 $(调用 import-module 来引入主 .so,然后在可执行文件中有一个看起来像

int main(int argc, char *argv[])
{
#if RUN_GTEST
    INIT_GTESTS(&argc,(char**)argv);
    RUN_ALL_GTESTS();
#endif
}

然后我用 BUILD_EXECUTABLE 构建它,像这样部署它:

find libs/ -type f -print -exec adb push {} /data/local/tmp \;

像这样运行它

adb shell LD_LIBRARY_PATH=/data/local/tmp:/vendor/lib:/system/lib /data/local/tmp/gtest

所以它不测试应用程序的生命周期,但它测试所有的单元测试。

如果我需要使用 UI 测试某些东西,我可以做类似的事情,但将现在的“主要”功能设为本机函数,并在加载活动时调用它。

于 2013-08-08T23:20:29.870 回答