zoukankan      html  css  js  c++  java
  • google的C++单元测试框架gtest

    这个一个google主持的开源项目,http://code.google.com/p/googletest/ gtest在google的很多其他的开源项目中都使用到了,如:chromium gtest的优点,就是写案例简单,并且跨平台,有一定的可扩展性 用TEST这个宏加上我们的代码就可以生产一个案例,例如: TEST(FactorialTest, Zero) { EXPECT_EQ(1, Factorial(0)); } 在这里FactorialTest是案例名称, Zero是测试名称 EXPECT_EQ这个宏表示期待相等,在这里是期待我们写的函数Factorial(int),参数为0时返回1 怎么样执行这个测试案例呢?只要在main函数里面写如下的代码: int _tmain(int argc, _TCHAR* argv[]) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } testing::InitGoogleTest(&argc, argv);这句不适必要的,只是传递执行参数给测试框架 运行测试程序,gtest会显示详细的测试过程 很显然一个EXPECT_EQ宏不够我们使用,gtest为我们提供了更多的判断宏: Bool类型的有EXPECT_TRUE,EXPECT_FALSE 数值类型的有EXPECT_EQ,EXPECT_NE,EXPECT_LT,EXPECT_LE,EXPECT_GT,EXPECT_GE 字符串的有EXPECT_STREQ,EXPECT_STRNE,EXPECT_STRCASEEQ,EXPECT_STRCASENE 如果一个EXPECT_*失败的话,案例会继续执行,如果你想停下来的话,gtest为每个EXPECT_*提供了一个对应的ASSERT_* 一个案例想强制返回成功的话,只要调用SUCCEED(),相反要失败的话,只要调用FAIL() 如果你想在测试过程中加入自己的输出,只要在gtest的宏后面加上<<"你的输出"即可,是不是很方便。 除了上面简单的检查外,还支持异常判断,因为有些时候我们是靠异常来返回错误的。 通过继承testing::Environment,实现SetUp和TearDown,你可以扩展这个测试框架。 除此之外还有一个更复杂的TEST_F等着你,说复杂是说本身实现复杂,但使用不复杂。 google给我们提供的这个轮子很不错,如果你感兴趣的话,可以svn co gtest的代码看看,里面有sample,还有wik

    其他C++Unit test工具还有:

    CPPUnit (NUnit for C# )

    A Tool that can make create c++ test cases using NUnit.

  • 相关阅读:
    家庭记账本安卓版开发:第一天
    家庭记账本安卓版开发:第二天
    通过Android的API对Sqlite数据库进行操作
    通过SQL语句操作Sqlite数据库
    Activity组件(四):通过requestCode和resultCode来实现Activity间的数据回传
    Activity组件(三):通过对象实现信息添加及展示
    家庭记账本安卓版开发:第三天
    梦断代码(三)
    MacType使用配置
    去掉win7快捷方式箭头及修复锁定到任务栏失效
  • 原文地址:https://www.cnblogs.com/taoxu0903/p/1653856.html
Copyright © 2011-2022 走看看