2008-12-22 100 views
22

如何开始在C++中进行单元测试?C++中的单元测试

我在Java中编码时使用过Junit,并发现它非常有用。 在C++中有类似的东西吗?你有什么建议 ?

+6

@Kim:是的,由于这个问题,这种新的服务引导了我。 SO不仅仅是问题和答案,它还具有社区对答案的意见和反馈。 – ereOn 2011-03-28 08:45:04

回答

1

不知道你要定位哪个平台/编译器,我只能提出一般性建议。过去我已经很成功地使用了this(CppTest)。有一个简单的框架UnitTest++看起来很有趣。

2

我个人最喜欢的是TUT。这两个主要原因是:1)它不会强制你使用Java-ISM,而是利用C++的优势,2)你可以控制它,编写可执行文件(我有一个我使用的模板),报告等(默认情况下提供基于流的版本)。

对我来说,它非常遵循KISS的理念,2个头文件,没有宏,没有解析器,只是带有一点骨架代码的普通旧C++代码。

http://tut-framework.sourceforge.net/

7

UnitTest++,相传的UnitTest ++写这个comparison单元测试框架的作者。

+0

+1,我使用这个框架,并可以推荐它!它不仅仅是一个传说。 1.0版本在这里:http://gamesfromwithin.com/unittest-v10-released(在上面的链接相同的博客...) – Kleist 2011-11-11 11:50:30

3

我对任何C++单元测试框架都不满意。由于C++没有反射,很难编写方便的单元测试工具。 CxxTest与我发现的一样好。我在一些项目中使用过它,但通常我只是编写自己的测试,不用框架或使用我自己编写的粗糙框架。

+0

你可能想看看CATCH(从我的答案链接) – philsquared 2010-12-28 03:08:40

1

Aeryn是另一个C++测试框架值得一看

8

我最近编写了一个由5部分组成的系列博客文章,内容涵盖了C++中的单元测试。它提供了如何在Visual Studio中执行此操作的分步说明。

  • Part 1:如何开始在C++中用Boost.Test进行单元测试。

  • Part 2:由Boost.Test提供的断言框架,它演示了测试驱动开发的简单编程练习。

  • Part 3:继续进行测试驱动开发以完成PrimeFactors :: Generate方法的功能。

  • Part 4:测试驱动的用户界面开发。

  • Part 5:Boost.Test中的设施,用于在测试之间共享通用设置和拆卸动作,并将测试组织到套件中。

2

我刚推出我自己的框架,CATCH,那里。它仍在开发中,但我相信它已经超越了大多数其他框架。 不同的人有不同的标准,但我试图覆盖大部分地面,没有太多的权衡。 看看我的链接的博客条目品尝师。我的五大特点是:

  • 头只
  • 的功能和基础的方法测试
  • 自动注册
  • 发生分解标准C++表达式为LHS和RHS(所以你不需要断言宏的整个家族) 。
  • 支持的函数基于固定装置内的嵌套部分使用自然语言
  • 名称试验 - 功能/方法名生成

它还具有Objective-C的绑定。