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.

  • 相关阅读:
    给jquery 添加触屏事件,上下左右 touchwipe插件
    node.js 安装运行
    CSS3 3D 盒子模型
    javascript 获取内联样式
    HTML5 离线存储应用案例
    swipe.js 轻松实现手机端滑动效果
    手机网页轮播切换,简易版
    多行文字垂直居中
    jquery实现简单轮播
    利用media query写响应式布局
  • 原文地址:https://www.cnblogs.com/taoxu0903/p/1653856.html
Copyright © 2011-2022 走看看