---------googletest项目配置
googletest源码下载:
https://github.com/google/googletest
测试项目cmake构建依赖gtest和gtest_main
target_link_libraries(${PROJECT_UT}
PRIVATE
gtest
gtest_main
)
最好给整个项目搞一个UTable的宏来控制是否做单元测试
option(ENABLE_UT "Build unit test projects" OFF)
if(ENABLE_UT)
add_subdirectory(CommonTest)
endif()
---------测试用例书写
备注:单元测试写在同级别代码目录下
比如
Common
CommonTest
1、定义测试类
#include "gtest/gtest.h"
#include "uaplatformlayer.h"
class XXXTest : public testing::Test
{
public:
static void SetUpTestSuite()
{
// Initialize the UA Stack platform layer
UaPlatformLayer::init();
printf("SetUpTestSuite\n");
}
static void TearDownTestSuite()
{
// Cleanup the UA Stack platform layer
UaPlatformLayer::cleanup();
printf("TearDownTestSuite\n");
}
protected:
void SetUp() override
{
printf("SetUp\n");
}
void TearDown() override
{
printf("TearDown\n");
}
};
#endif
2、新建test.cpp
添加测试执行,某一个测试类的 什么测试用例
TEST_F(XXXTest, XXXQueue_push) // ok
{
XXXQueue queue;
Data data;
queue.push(dta);
EXPECT_EQ(queue.size(), 1);//期待结果
ASSERT_TRUE(queue.empty());//断言
}
3、构建和运行
运行结果:
Running main() from E:\3rdparty\googletest\googletest\src\gtest_main.cc
[==========] Running 4 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 4 tests from StorageTest
SetUpTestSuite
[ RUN ] StorageTest.XXXQueue_push
SetUp
TearDown
[ OK ] StorageTest.XXXQueue_push (0 ms)
4、查看测试结果、问题排查