如何使用cpp单位

时间:2009-11-25 07:23:21

标签: c++ unit-testing cppunit

是否有一本好书或在线网站讨论CppUnit的用途,适合初学者?

5 个答案:

答案 0 :(得分:4)

当你开始使用单元测试时,不要以100%的覆盖率为目标 - 这种方式就是疯狂。

考虑涵盖班级中的所有主要方法(低悬的水果)。

当我开始进行单元测试时(通过UnitTest++),我进行了全面覆盖,制作应该受到私有保护的方法,然后使用包装类来测试它们。 Seam函数,所以我可以测试更接近金属的类。

一本关于单元测试的好书是Working Effectively with Legacy Code,尽管它的名字也谈到了绿色领域的发展,但写得很好并有很好的例子可以启动。

更新:在编写测试时,也不要过于担心在开始时覆盖每一种可能性。你会错过一些东西。我曾经测试通过,但实时代码会在该函数中崩溃。通过测试运行输入显示出错了,并允许我重写函数,以便通过所有测试。在客户(不幸的是,我)发现了这个错误之前,原始测试已经持续了大约7或8个月。

答案 1 :(得分:3)

答案 2 :(得分:2)

单元测试允许单独测试,一次一个方法。

基本上,一个测试用例创建一个被测试类的实例和它所依赖的类,调用一个方法,并使用断言验证该方法是否按预期工作。

实现单元测试的一个好方法是Test-Driven Development(TDD),其中单元测试在代码之前编写。虽然这可能听起来很奇怪,但这允许获得可测试(和测试)的代码。如果首先编写代码,那么它可能不容易测试。

TDD流程如下:

RED:写一个失败的测试 GREEN:编写足够的代码使其通过 REFACTOR:清理代码,删除重复


我不确定CppUnit是最广泛使用的。它是jUnit的一个移植 - Java框架 - 但它很重;存在简化的verisons:CppUnitLite,NanoCppUnit以及Cxxtest,Boost.Test和TUT,请参阅维基百科上的this list。如果您没有绑定CppUnit,则会有article comparing them

答案 3 :(得分:1)

答案 4 :(得分:0)

我转向“灵感”的书是Michael Feathers有效地使用遗产代码。他是CppUnit的作者,并将本书作为一种帮助将单元测试添加到一个大型遗留项目的方法。如果你刚刚开始一个新项目,它不太可能对你有所帮助,但如果你想把单元测试变成一个旧项目,他有很多好主意。

尝试重构现有项目的真正问题是从管理层开始。对他们来说,如果没有明显的好处(没有新的功能,更改代码的风险),他们可能会认为这不值得花费。你必须努力销售它们的真正好处(提高质量,添加新代码的容易程度等),最后他们可能认为它不值得。

我刚刚接受了Gerard Meszaros的xUnit测试模式。它实际上是昨天到达的所以我只阅读了前几章,并且不能完全推荐它。但到目前为止,它已经为作者的自动化单元测试理念提供了合理的建议,这可能是你正在寻找的东西。