我知道已经有一些关于推荐c++单元测试框架的问题,但所有的答案都没有帮助,因为他们只是推荐了一个框架,而没有提供任何关于(特性)比较的信息。
我认为最有趣的框架是CppUnit、Boost和新的谷歌测试框架。有人做过比较吗?
我知道已经有一些关于推荐c++单元测试框架的问题,但所有的答案都没有帮助,因为他们只是推荐了一个框架,而没有提供任何关于(特性)比较的信息。
我认为最有趣的框架是CppUnit、Boost和新的谷歌测试框架。有人做过比较吗?
当前回答
Boost Test Library是一个非常好的选择,特别是如果你已经在使用Boost。
// TODO: Include your class to test here.
#define BOOST_TEST_MODULE MyTest
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_CASE(MyTestCase)
{
// To simplify this example test, let's suppose we'll test 'float'.
// Some test are stupid, but all should pass.
float x = 9.5f;
BOOST_CHECK(x != 0.0f);
BOOST_CHECK_EQUAL((int)x, 9);
BOOST_CHECK_CLOSE(x, 9.5f, 0.0001f); // Checks differ no more then 0.0001%
}
它支持:
自动或手动测试注册 很多人断言 自动比较集合 各种输出格式(包括XML) 固定装置/模板…
PS:我写了一篇关于它的文章,可能会帮助你入门:c++单元测试框架:Boost测试教程
其他回答
我刚刚推出了自己的框架Catch2。它仍在开发中,但我相信它已经超越了大多数其他框架。 不同的人有不同的标准,但我试图涵盖大部分领域,没有太多的权衡。 你可以看看我的博客链接。我的五大特点是:
头只 自动注册基于功能和方法的测试 将标准c++表达式分解为LHS和RHS(因此不需要一整套断言宏)。 支持基于函数的fixture中的嵌套部分 使用自然语言命名测试-生成函数/方法名称
它也有Objective-C绑定。该项目托管在Github上
CppUTest -非常不错的轻量级框架,带有模拟库。值得一看。
Boost Test Library是一个非常好的选择,特别是如果你已经在使用Boost。
// TODO: Include your class to test here.
#define BOOST_TEST_MODULE MyTest
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_CASE(MyTestCase)
{
// To simplify this example test, let's suppose we'll test 'float'.
// Some test are stupid, but all should pass.
float x = 9.5f;
BOOST_CHECK(x != 0.0f);
BOOST_CHECK_EQUAL((int)x, 9);
BOOST_CHECK_CLOSE(x, 9.5f, 0.0001f); // Checks differ no more then 0.0001%
}
它支持:
自动或手动测试注册 很多人断言 自动比较集合 各种输出格式(包括XML) 固定装置/模板…
PS:我写了一篇关于它的文章,可能会帮助你入门:c++单元测试框架:Boost测试教程
一个新的播放器是谷歌测试(也称为谷歌c++测试框架),这是非常好的。
#include <gtest/gtest.h>
TEST(MyTestSuitName, MyTestCaseName) {
int actual = 1;
EXPECT_GT(actual, 0);
EXPECT_EQ(1, actual) << "Should be equal to one";
}
主要特点:
可移植的 致命和非致命断言 ASSERT_EQ(5, Foo(i)) << " where i = " << i; 谷歌Test自动检测您的测试,不需要您枚举它们以运行它们 使扩展断言词汇表变得容易 死亡试验(见高级指南) 子例程循环的SCOPED_TRACE 您可以决定运行哪些测试 生成XML测试报告 fixture / Mock /模板…
Wikipedia提供了一个完整的单元测试框架列表,并列出了支持或不支持的特性。