gtest在嵌入式设备上的使用-入门级(gtest-1.7.0)

2019-07-12 22:51发布

gtest用起来还是很简单的,只是网上很多文章都讲了太多细节,反而混淆视听。本文期望以最简单的方式,介绍在嵌入式环境中的使用。

一、先说使用

    1)我们需要gtest的一个库libgtest.a,以及一个目录的头文件gtest
    2)定义一个main函数,或者在原有main函数中调用其内容GTEST_API_ int main(int argc, char **argv) { printf("Running main() from gtest_main.cc "); testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }     3)为每个小模块,或者每个类,每个函数,编写测试代码。它用起来是这样的TEST(CaseName, TestName) { int a = -2; EXPECT_EQ(2, abs(a)); }    其中,CaseName是你的测试大项的名字,TestName是小项的名字。你可以写很多这样的Test。而gtest都会帮你依次执行,并最终形成报告打印在命令行中。好了,这样我们就能测试abs 能否正确的实现取绝对值的功能了。gtest所有做的事情,就是用我们调用很多的,分布在代码各处的TEST。而TEST中的内容,也是我们写的各种EXPECT_EQ,EXPECT_LE 等等各自判断条件。

二、再说说交叉编译

我使用的是cmake编译的,基于1.7.0版本。1)在cmake/目录中创建文件hermetic_build.cmake,其中定义如下内容:set(CMAKE_C_COMPILER ${CROSS_COMPILE}gcc) set(CMAKE_CXX_COMPILER ${CROSS_COMPILE}g++) add_definitions(${USER_DEFINISION})前两行定义的是交叉编译器,最后一行则是我们定义的编译参数。CROSS_COMPILE和USER_DEFINISION,我们会在脚本中定义,一个典型的脚本是像这样的:cmake . -DCROSS_COMPILE=arm-hisiv500-linux- -DUSER_DEFINISION:STRING="-mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4 -mno-unaligned-access -fno-aggressive-loop-optimizations"编译完成后,取出库,头文件来使用即可