googletest入门

googletest入门

1、Windows上编译生成gtest.lib静态库

1.1、首先在github上下载Googletest1.8.0版本

https://github.com/google/googletest/releases/tag/release-1.8.0

1.2、解压并创建build目录
在这里插入图片描述

1.3、使用cmake gui生成sln等文件

这里选择本地vs的版本,根据最终使用vs生成对应的gtest.lib等静态库。

2、概念的描述和simple demo

详细文档:https://google.github.io/googletest/primer.html

2.1、Test,Test Suite,Test Case

google一开始也是使用的TestCase术语(term)来组织相关的测试用例,一些(ISTQB)组织和其他的书籍中使用Test Suite这个术语(term)。

2.2、基本概念

使用googletest,我们通过写断言(assertions)语句来检测一个条件是否为true。一个断言的结果可以是成功,非致命失败,致命失败。如果一个致命失败发生,它会中断当前函数,否者程序继续正常运行。

Tests使用断言来验证被测试代码的行为,如果一个测试crash了它会失败;否则就是成功。

一个Test Suite包含一个或多个测试用例。我们可以组织一个测试用例进入到一个TestSuite中。当多个测试用例在一个test suite中共享一个对象或子进程时,可以将它们放入到test fixture类中。

一个测试程序可以包含多个test suites。

2.3、ASSERT和EXPECT选择

2.3.1、ASSERT

如果测试用例失败了它会生成致命错误并终止当前函数;

2.3.2、EXPECT

EXPECT会生成非致命错误,不会终止当前函数。通常情况下EXPECT更好有点,允许一个测试中出现多处错误。但是如果问题出现时再继续没有意义就可以使用ASSERT。

2.3.3、自定义异常描述

ASSERT_EQ(x.size(), y.size()) << "Vectors x and y are of unequal length";

for (int i = 0; i < x.size(); ++i) {
  EXPECT_EQ(x[i], y[i]) << "Vectors x and y differ at index " << i;
}

如果是wchar这种类型,会被自动转成utf8的。

2.4、simple demo

#include <gtest\gtest.h>

int Factorial(int n)
{
	return n + 1;
}

TEST(FactorialTest, HandlesZeroInput){
	EXPECT_EQ(Factorial(0), 1);
}

TEST(FactorialTest, HandlesPositiveInput){
	EXPECT_EQ(Factorial(0), 1);
	EXPECT_EQ(Factorial(1), 1);
	EXPECT_EQ(Factorial(2), 2);
	EXPECT_EQ(Factorial(3), 6);
}

int main(int argc,char**argv)
{
	::testing::InitGoogleTest(&argc, argv);
	return RUN_ALL_TESTS();
}

test fixture使用TEST_F()详见https://google.github.io/googletest/primer.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值