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.

  • 相关阅读:
    Quicksum -SilverN
    uva 140 bandwidth (好题) ——yhx
    uva 129 krypton factors ——yhx
    uva 524 prime ring problem——yhx
    uva 10976 fractions again(水题)——yhx
    uva 11059 maximum product(水题)——yhx
    uva 725 division(水题)——yhx
    uva 11853 paintball(好题)——yhx
    uva 1599 ideal path(好题)——yhx
    uva 1572 self-assembly ——yhx
  • 原文地址:https://www.cnblogs.com/taoxu0903/p/1653856.html
Copyright © 2011-2022 走看看