Android NDK上的单元测试

Ind*_*ara 20 unit-testing android-ndk

如何在Android本机代码(本机C/C++,而不是 Java)上运行单元测试?到目前为止,我只发现了一个类似的问题,答案是说使用junit和JNI,我不想这样做(添加JNI调用对于单元测试来说似乎不必要复杂,并且实际上并不是本机代码的单元测试无论如何).

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

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

Dou*_*g-W 17

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

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

然后我用BUILD_EXECUTABLE构建它,像下面那样部署它:

find libs/ -type f -print -exec adb push {} /data/local/tmp \;
Run Code Online (Sandbox Code Playgroud)

并运行它

adb shell LD_LIBRARY_PATH=/data/local/tmp:/vendor/lib:/system/lib /data/local/tmp/gtest
Run Code Online (Sandbox Code Playgroud)

因此它不测试应用程序生命周期,但它测试所有单元测试.

如果我需要使用UI测试某些东西,我可以做类似的事情,但现在将'main'作为本机函数,并在加载活动时调用它.