论坛首页 综合技术论坛

有关TDD(Test-Driven Development)和持续集成(Continuous Integration)

浏览 11369 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-11-02  
dogstar 写道
tuti 写道

重构并不改变类的外部行为,所以一般情况下不需要写测试.只要保证原来的测试仍然通过就是可以了.

我的理解也是这样的. 如果改变方法的功能的话,估计那叫重做。哈哈
我目前写测试是:junit写的测试和方法对应。比如有do1 do2 那么对应就有testDo1 testDo2。如果按照tdd的话,就先写testDo1在写do1这样的顺序。如果我重构的话,只改变do1的代码,而没有改变功能,那么就不需要修改testDo1,那么按照你的说法肯定可行。那如果我抽出了几个私有方法,就是助手方法,怎么测?这些方法需要测吗?如果要测的话,那么方法肯定是先出来的,在写测试。这又与tdd有些矛盾了。 还是那里没有理解,还是太执着了tdd了?呵呵
希望有人可以详细介绍一下自己的实践经验

好像是太较真儿了,跟着感觉走吧,让测试驱动着你去思考、设计
0 请登录后投票
   发表时间:2006-11-02  
dogstar 写道
tuti 写道


重构并不改变类的外部行为,所以一般情况下不需要写测试.只要保证原来的测试仍然通过就是可以了.



我的理解也是这样的. 如果改变方法的功能的话,估计那叫重做。哈哈

我目前写测试是:junit写的测试和方法对应。比如有do1 do2 那么对应就有testDo1 testDo2。如果按照tdd的话,就先写testDo1在写do1这样的顺序。如果我重构的话,只改变do1的代码,而没有改变功能,那么就不需要修改testDo1,那么按照你的说法肯定可行。那如果我抽出了几个私有方法,就是助手方法,怎么测?这些方法需要测吗?如果要测的话,那么方法肯定是先出来的,在写测试。这又与tdd有些矛盾了。 还是那里没有理解,还是太执着了tdd了?呵呵

希望有人可以详细介绍一下自己的实践经验


你这样一个方法一个测试是不够的,针对一个方法进行很多测试的情况很常见。我在文章中所提到的国外项目,针对一个方法用错误的参数调用是否会抛出期望异常等情况都有相应的test,不过在国内这只是理想了,毕竟项目进度在那里压着,bt的客户在拍着脑袋喊明天上线,所以能做到多全面的测试就说不准了。
0 请登录后投票
   发表时间:2006-11-02  
dogstar 写道
那如果我抽出了几个私有方法,就是助手方法,怎么测?

什么叫助手方法? 别的类可以调用吗?
如果 别的类可以调用,那就是改变了类的对外行为,可能需要测试.
如果 别的类不可见,也无法调用,那就是没有改变类的对外行文,也就不需要测试.
况且调用不到,又怎么测试呢?


详细的实践经验,可以看<测试驱动开发> (Kent Beck),书中有详细的例子.
0 请登录后投票
   发表时间:2006-11-02  
就是私有方法,别的类不可以调用.但是,这个方法肯定也有自己的功能,需要去测试呀.我看了以前fireboy等讨论的tdd帖子,他把这个方法抽出去到一个类里,然后去测试.这样有点过度设计了.还有就是把这个方法变成非私有的去测试,这样又失去了封装性.哎,不懂,不懂...
0 请登录后投票
   发表时间:2006-11-02  
私有方法都是为对外接口服务的,只要对外接口的功能正确,
又有谁来关心你的私有方法对还不对呢?

其实有没有这个私有方法,或者私有方法压根没被调用到,对这个类的调用者
而言,都是无所谓的.
0 请登录后投票
   发表时间:2006-11-05  
如果非要按照TDD的思想,当然应该是先重够测试的方法啊.事实上TDD应该只是一种思想或者规范
,一种可以标准化我们的开发流程和提高软件质量的思想.应该还是可以在自己的应用上变通的.
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics