|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-01-13
private方法应该不需要单元测试
单元测试的目的是为了保证你修改复用代码时不会影响到所有引用这段代码 private方法本来就不能被别的类引用 所以不需要用单元测试来保证其正确性 如果你认为private方法里有非常重要的业务逻辑,一定要测试。就可以用上面gigix写的protected的方式来重修修饰这个方法的作用域。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-01-16
dogstar 写道 刚看了infoq的一篇文章私有方法、测试驱动开发与优秀设计。文章URL:
http://www.infoq.com/cn/news/2008/01/private-methods-tdd-design 那么该拿私有方法怎么办呢?测试它们太折磨人了。我们可否修改一下,把它们暴露给测试代码?或者不去测试私有方法,让设计与可测试性永不相干?或者,私有方法是一种坏味道,它表明一个类做了太多事情? 大家怎么看? Private方法的测试是包含在对引用他们的public或者protected的方法的测试中的 这些方法当然被测试过了 |
|
| 返回顶楼 | |
|
最后更新时间:2008-01-16
呵呵,楼主和我开始玩tdd的时候遇到的问题一样,不知道拿private怎么办:
开始我是用类反射的方式获取到待测private方法进行测试 但是当我后来用测试驱动开发实用指南洗脑了一遍以后,我发现,你要测试的是对象的功能,而不是代码级别的方法。 因为只有你暴露出来的功能才是给别的对象使用的。 而TDD的一个主要目标就是要保证你这个对象的这个功能提供给别人使用时一定要是正确的。 这个一定要明确出来,所以后来我做TDD的时候,只测对象暴露出来的功能。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-01-16
一定要单元测试么?很多时候,我们写了很多单元测试(特别是把private变成public,然后再加上partial mock的)。看似测试很多,却没有用处。不如集成测试好了。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-01-17
assert是测试private方法的一个选择
|
|
| 返回顶楼 | |
|
最后更新时间:2008-01-17
gigix 写道 任何超过3句话的非public的方法都应该被看作一个独立的职责,因此应该存在于一个独立的对象中。
方法的长度不应该成为判断一个方法是否独立出来的标准。标准应该是这个这个方法和这个对象的语义距离 |
|
| 返回顶楼 | |







