GoogleTest简单使用
googleTest是谷歌公司发布的一个跨平台的C++单元测试框架
两种断言
- 致命断言ASSERT_*:当断言失败时,产生致命错误,并终止当前函数
- 非致命断言EXPECT_*:当断言失败时,产生非致命错误,并不会终止当前函数
常用的断言
ASSERT | EXPECT | Verifies |
---|---|---|
ASSERT_TRUE(condition) |
EXPECT_TRUE(condition) |
condition is true |
ASSERT_FALSE(condition) |
EXPECT_FALSE(condition) |
condition is false |
ASSERT_EQ(val1, val2) |
EXPECT_EQ(val1, val2) |
val1 == val2 |
ASSERT_NE(val1, val2) |
EXPECT_NE(val1, val2) |
val1 != val2 |
ASSERT_LT(val1, val2) |
EXPECT_LT(val1, val2) |
val1 < val2 |
ASSERT_LE(val1, val2) |
EXPECT_LE(val1, val2) |
val1 <= val2 |
ASSERT_GT(val1, val2) |
EXPECT_GT(val1, val2) |
val1 > val2 |
ASSERT_GE(val1, val2) |
EXPECT_GE(val1, val2) |
val1 >= val2 |
TEST使用
#include "gtest/gtest.h"
int Factorial(int n) {
int result = 1;
for (int i = 1; i <= n; i++)
result *= i;
return result;
}
//使用宏TEST(TestSuitName, TestName),组织不同场景的cases
//1. 负数case
TEST(FactorialTest, Negative) {
EXPECT_EQ(1, Factorial(-5));
EXPECT_EQ(1, Factorial(-1));
}
//2. 正数case
TEST(FactorialTest, Positive) {
EXPECT_EQ(1, Factorial(1));
EXPECT_EQ(1, Factorial(2)) << "Failed: xxxx"; //通过<<可以在断言出错时打印信息
}
//运行所有的case
int main(int argc, char *argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
TEST_F使用
test fiture
是在gtest
中为每个TEST
都执行一些同样的操作,这样就可以避免每个TEST
中重复的冗余过程。
要使用TEST_F
,首先需要定义一个TestFixture
类,该类需要继承testing::Test
,同时需要实现以下两个虚函数和两个静态函数:
virtual void SetUp()
:在每个TEST_F
测试案例运行前都会运行一次virtual void TearDown()
:在每个TEST_F
结束后都会运行一次static void SetUpTestSuit
:在第一个测试案例运行之前运行static void TearDownTestSuit()
:在最后一个测试案例运行之后运行
#include <gtest/gtest.h>
class MyTestFixture : public testing::Test {
protected:
// 在此处定义测试夹具的设置和清理代码
void SetUp() override {
// 在每个测试用例运行之前执行
// 可以在这里初始化共享资源
}
void TearDown() override {
// 在每个测试用例运行之后执行
// 可以在这里清理共享资源
}
// 可以添加其他成员函数和成员变量
};
TEST_F(MyTestFixture, Test1) {
// 在这里编写测试代码,可以使用测试夹具中的资源
ASSERT_EQ(2 + 2, 4);
}
TEST_F(MyTestFixture, Test2) {
// 在这里编写另一个测试,可以使用相同的测试夹具
ASSERT_TRUE(true);
}
int main(int argc, char *argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
标签:框架,ASSERT,gtest,EXPECT,测试,TEST,val2,val1,condition
From: https://www.cnblogs.com/ray93/p/17722969.html