巢穴

about:blank

关于CppUnit的使用?

    首先,我是初学者,从无使用CppUnit的经验。

    项目进展到后期,想提高稳定性,在这个时候是否适合加入单元测试呢?
    找了几篇文章看了看,似乎谈单元测试就不得不谈TDD,但我看到的绝大多数人的观点是舍TDD,留单元测试
    好了,暂且不谈TDD,只谈单元测试,其中我看到一篇Blog的观点是,使用单元测试,来逐步重构代码,其论点就是真正适合单元测试的代码,能够更符合SOLID原则。
     这个看法是我目前比较认同的。
     另外看到一种使用方式是,只对算法类和一些基础类,进行单元测试。对于这种使用方式,我实不知使用CppUnit这种现成的较为自动化的单元测试的框架意义在哪。
    最后一个问题就是,如果我认为的前一种观点是正确的,那在我们的这个项目进行到的这个阶段,想要提高稳定性去做单元测试,是需要大量重构的,这样一个量会不会反而会影响稳定性?


     欢迎大家随意发表自己的观点哈,我只是想多了解一下。以便做出认为自己更适合的判断。

posted on 2011-03-03 09:56 Vincent 阅读(2352) 评论(11)  编辑 收藏 引用 所属分类: 游戏

Feedback

# re: 关于CppUnit的使用? 2011-03-03 11:12 空明流转

对于TDD来说,单元测试是开发驱动,当然很重要。如果不是TDD,那主要是回归用。  回复  更多评论   

# re: 关于CppUnit的使用? 2011-03-03 11:29 Vincent

@空明流转
呵呵,我主要是想更贴近于我们目前项目情况的一些观点。如果是为回归测试的话,是可以引入CppUnit,但是否有必要去做全面的单元测试呢?我觉得似乎是没必要。想听听更多人的观点。  回复  更多评论   

# re: 关于CppUnit的使用? 2011-03-03 12:16 airtrack

单元测试最好是在项目初期就使用,项目已经到后期的才做单元测试性价比不高,尤其是各个模块间的耦合很大时很难做单元测试。项目开始就用单元测试可以帮助降低模块的耦合。  回复  更多评论   

# re: 关于CppUnit的使用?[未登录] 2011-03-03 12:20 vincent

@airtrack
恩。我就是这个想法,我认为现在的这个项目进度和规模,目前为了迎合单元测试,而做的这样大规模的重构,可能会引进的问题会更多,稳定性可能会不升反降。但因为我的确从未使用过这个东西,所以对于我的想法不是很肯定,所以在这里咨询一下各位大神哈  回复  更多评论   

# re: 关于CppUnit的使用?[未登录] 2011-03-03 14:09 tom

单元的定义是可以因人因系统而异的。一个全新的应用,当然可以以函数或类位单元。对于旧系统以一个易于定义的,稳定的功能单元来作为基本单位测试,先把他框住。有必要再深入撕扯重构,未尝不可。

在我看来,单元测试最大的意义在于为以后的更改做准备,最大限度保证功能是递增的,不会在引入新功能的情况下意外牺牲已有的功能。

不过我一般用Boost.Test。  回复  更多评论   

# re: 关于CppUnit的使用?[未登录] 2011-03-03 15:00 杨粼波

后期可以用,维护的时候,因为可以进行自动化的回归测试。
不过,单元测试不是万能,但是,能够保证一些细节的可靠。  回复  更多评论   

# re: 关于CppUnit的使用?[未登录] 2011-03-03 15:51 vincent

谢谢诸位大神哈,说的很好哈,的确是可以引入的,一切适情况而定。在次谢过了:)  回复  更多评论   

# re: 关于CppUnit的使用? 2011-03-03 15:51 空明流转

这个时候加入Cpp Unit的主要目的,在于debug的时候有一个比较小的测试集容易寻找问题,同时也在修bug和重构的时候有一个可以控制的回归。单元测试可以加,但是尽量不要对项目进行大的调整。  回复  更多评论   

# re: 关于CppUnit的使用?[未登录] 2011-03-03 15:55 vincent

@空明流转
恩。谢谢:) 受教啦  回复  更多评论   

# re: 关于CppUnit的使用? 2011-03-03 20:44 陈梓瀚(vczh)

项目快完成了就别碰了,下一个项目用cppunit做测试吧。  回复  更多评论   

# re: 关于CppUnit的使用? 2011-03-04 21:25 乱78糟

我来学习,呵呵  回复  更多评论   



只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理