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"
编译完成后,取出库,头文件来使用即可