编辑:这个问题可能会被投票结束,因为“不是真正的编程问题”。我只能反驳“nyah!”现在我找到了直接相关的this question并且应该有所帮助。
我有条不紊地升级我的源代码以使用C ++ 11次,而且我的很多代码与之交互的部分之一是UnitTest ++。
我将每个实现cpp
文件的后半部分专用于单元测试,因此它们包含许多
TEST(testname) {
// test code
}
声明。
现在,UnitTest ++已经有8年的历史了,它仍然编译得很好,所以我没有迫切需要更换它。然而,我发现它可能不再被维护(尽管它现有的功能看起来确实足够,这是一个不好的迹象)因为网站和sourceforge已经关闭。
所以即使我的代码现在工作正常,现在可以更早地转换到更好的系统,而不是更晚,因为它将减少将来的翻译负担。
我环顾四周,似乎有一些选择可供我使用。特别有趣的是libunittest和其他像CATCH这样仅限标题的人。
我的问题是那些过去可能有过使用UnitTest ++和其他单元测试系统经验的人,对你有用的,以及你有什么建议。我正在寻找一些非常便携的东西,除了C ++ 98/03或C ++ 11编译器(gcc,clang,msvc)和标准库之外没有外部依赖性,并且只有标题是加号但没必要。
所以我猜我的偏好确实倾向于缩小选项范围。即使使用UnitTest ++,我仍然喜欢它的可移植性和自包含性,但是我必须编写一个大约100行左右的代码来扩展它,以便在两个方面为我提供灵活性:
一个完美的答案就像this一样,来自UnitTest ++本身背后的一个人!但那篇文章已经10年了!!
答案 0 :(得分:2)
您可能会发现Google Test有用。它支持UnitTest ++所做的一切以及更多功能,并且仍然可以维护(并且经常在Google中使用)。此外,它还有一个相应的模拟库Google Mock,用于创建对创建模拟实现非常有用的模拟。
答案 1 :(得分:0)
我还有两个:
两者都是 积极开发 。
非常便携[...]
[...]超越C ++ 98/03或C ++ 11编译器(gcc,clang,msvc)和 标准库
CppUTest可以与各种编译器和平台一起使用 - 它也可以用于嵌入式系统。此外,还有C interface的内置版。
且外部依赖性为零
不多说:下载/结帐和构建,完成。
并且只有标题是加号但不是必需的。
不幸的是,这对CppUtest来说是不可能的,它需要它的testlibrary才能进行链接。
允许我指定要运行的特定测试
可能并且也在手册中解释(不是很困难)。请参阅here。
自定义测试的报告行为,例如向每个测试显示时间数据并在结束时总结总计
这在默认情况下以详细模式完成。也可以使用结果导出JUnit Xml文件。此外,您可以自定义所有步骤和输出类型的输出格式。
示例代码:
TEST_GROUP(FirstTestGroup)
{
/*
* Test group = test suite
* You can implement tear down / setup here too
*/
};
TEST(FirstTestGroup, FirstTest)
{
FAIL("Fail me!");
}
TEST(FirstTestGroup, SecondTest)
{
int value = 4;
const int expected = 4;
CHECK_EQUAL(expected, value);
}
最终它不难使用:查看Manual。
顺便说一下。它包含模拟(CppUMock)和集成的内存泄漏检测器。
<强>文档强>