为什么使用googletest,而不是其他C++测试框架(译自google faq的该问题)

来源:互联网 发布:魔法王座翅膀升级数据 编辑:程序博客网 时间:2024/05/03 23:24
       首先要说清楚,我们不希望陷入“哪个C++测试框架最好”的辩论中。现在有许多不错的C++测试框架,各自拥有大量的开发者和用户。我们不认为存在一个最好的框架,你只是必须为特定的任务选择正确的工具。
     我们创造了google test,是因为找不到一个现有的框架能满足我们需要的所有功能和易用性。下面是我们之所以喜欢google test的特性列表,这些特性其他测试框架也能提供,但是组合起来只有google test才全部提供。我们希望这个列表可以帮助你决定google test​​是否也适合你。

    谷歌测试被设计为可移植的:没有例外或RTTI,能应对各种编译器和各种环境中的各种bug,比如Linux,Mac OS X,Windows和一些嵌入式操作系统。
    非严重断言(EXPECT_ *)能大量节省时间,因为在一个单独的编辑 - 编译 - 测试周期中能报告多个断言失败。
    容易编写意义清晰的消息性断言:可以使用流式语法来附加任何额外的信息,例如,ASSERT_EQ(5, Foo(i)) << " where i = " << i。不需要新的宏或特殊的函数。
    Google Test能自动探测编写的测试,不需要通过列举的方式来运行测试。
    编写死亡测试非常方便,可以确保生产代码中的断言在正确的条件下进行触发.
    当断言失败来自子程序或循环时, SCOPED_TRACE有助于了解其产生的上下文环境.
    可以使用名字模式来决定运行哪些测试。当你想快速重现测试失败时,可以节省时间。
    Google Test 可以生成XML测试结果报告,能用流行的持续构建工具进行解析,如Hudson.
    Google Test能很方便地做简单的事,也能让困难的事成为可能。除了支持高端特性,如全球测试环境和值参或型参测试,也支持用户用各种方式进行扩展。对于Google Test没有提供的特性,用户也能使用其开放API自己实现,不需要修改Google test本身。特别是,你能:
        通过定义自己的谓词扩展测试词汇
        教Google Test输出自定义类型,
        定义自己的测试宏和工具,并使用Google Test's的Service Provider Interface来验证,
        测试用例反射或通过解释测试事件来改变测试输出格式。.


原创粉丝点击