unit-testing - Android NDK 上的单元测试

标签 unit-testing android-ndk

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

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

一个官方的谷歌测试框架,如 googletest将是理想的,但这似乎不适用于 NDK。

最佳答案

我通过 NDK 使用 googletest 我使用 $(call 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 测试某些东西,我可以做类似的事情,但将现在的“主要”功能设为 native 函数,并在加载事件时调用它。

关于unit-testing - Android NDK 上的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18126967/

相关文章:

unit-testing - Visual Studio 2013 中的 Cucumber js

unit-testing - "Unit Testing"属于白盒测试还是黑盒测试?

unit-testing - 如何配置vs2012只保留最新的测试结果?

java - 从 JNI 代码中阻止对话框

c++ - 无法构建 opengl es 2.0 c++ native android 项目。 ( fatal error : android/sensor. h:没有这样的文件或目录)

android - 如何在 Android NDK 的 Android.mk 文件中正确包含预建静态库?

unit-testing - swift 2 : testing using Protocol-Oriented Programming instead of mock objects?

PHPunit:我可以模拟我测试的类吗?

android - 无法加载 libfoo : findLibrary returned null

performance - JNI - 将表示基本 Java 对象( bool )的作业转换为 native 基本类型( bool )