标签:ota 测试用例 imu cpp hat sqrt 框架 github ubunt
Google Test(gtest)是谷歌开源的用于c++单元测试的框架,其github主页:https://github.com/google/googletest
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。比如我们可以对程序中的一个文件、函数或一个类进行单元测试。下面以ubuntu为例进行简单的学习使用,此外windows和mac下也可以使用gtest。
sudo apt-get install libgtest-dev # 安装源文件
sudo apt-get install cmake
cd /usr/src/gtest
sudo cmake CMakeLists.txt # 使用CMake编译
sudo make
sudo cp *.a /usr/lib # 安装(复制)库文件到一般常用的库目录
创建一个示例项目,其中sqrt_test.cpp是测试文件,其中包含main函数。sqrt.h和sqrt.cpp就是我们要测试的自己写的程序,在这里作为测试文件的库文件,需要链接到可执行文件。
.
├── build
├── CMakeLists.txt
├── sqrt.cpp
├── sqrt.h
└── sqrt_test.cpp
下面是具体这四个文件的内容。库文件不用解释了,就是一个求平方根的函数。
// sqrt.h
#ifndef SQRT_H
#define SQRT_H
#include <cmath>
double squareRoot(const double a);
#endif
// sqrt.cpp
#include "sqrt.h"
// Get the Square root of a number.
double squareRoot(const double a)
{
double b = sqrt(a);
if(b != b) // NaN check
{ return -1.0; }
else
{ return sqrt(a); }
}
单元测试的测试用例要覆盖常用的输入组合、边界条件和异常,这里只进行常用和异常情况下两个测试。ASSERT_EQ很简单,即表明函数的返回值必须等于给定的值,更多的语法可以参考Google Test primer等官方文档。
// sqrt_test.cpp
#include "sqrt.h"
#include <gtest/gtest.h>
TEST(SquareRootTest, PositiveNos) // normal cases
{
ASSERT_EQ(6, squareRoot(36.0));
ASSERT_EQ(18.0, squareRoot(324.0));
ASSERT_EQ(25.4, squareRoot(645.16));
ASSERT_EQ(0, squareRoot(0.0));
}
TEST(SquareRootTest, NegativeNos) // extreme cases
{
ASSERT_EQ(-1.0, squareRoot(-15.0));
ASSERT_EQ(-1.0, squareRoot(-0.2));
}
int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
然后就是简单的CMake用法了,查找GTest库,然后进行链接等。
cmake_minimum_required(VERSION 3.1)
# Locate GTest
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})
# Link runTests with what we want to test and the GTest and pthread library
add_executable(myTest sqrt_test.cpp)
add_library(sqrt sqrt.cpp)
target_link_libraries(myTest ${GTEST_LIBRARIES} sqrt pthread)
然后运行测试程序也很简单
cd build
cmake ..
make
./myTest
输出应该是这个样子的:
[==========] Running 2 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 2 tests from SquareRootTest
[ RUN ] SquareRootTest.PositiveNos
[ OK ] SquareRootTest.PositiveNos (0 ms)
[ RUN ] SquareRootTest.NegativeNos
[ OK ] SquareRootTest.NegativeNos (0 ms)
[----------] 2 tests from SquareRootTest (0 ms total)
[----------] Global test environment tear-down
[==========] 2 tests from 1 test case ran. (0 ms total)
[ PASSED ] 2 tests.
可以看到两个测试都显示OK,因此最终状态显示PASSED!
本文参考:https://www.srcmake.com/home/google-cpp-test-framework
个人理解错误的地方还请不吝赐教,转载请标明出处
标签:ota 测试用例 imu cpp hat sqrt 框架 github ubunt
原文地址:https://www.cnblogs.com/GJGJH/p/10463549.html