离弦之Ray

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks

问:如何对私有方法进行单元测试?

答:重点在于,你不应该有任何方法是从一开始设计出来就是private的,因为你的每段程序都应该在单元测试的驱动之下产生,而测试是不可能驱动出 来一个private方法的。那么private方法从哪里来?只能从重构而来。所以答案是:private方法是不需要测试的,因为它是重构的产物,而 重构是不改变程序可观察之行为的。既然行为不改变,测试自然也不需要有任何改变,所以不需要针对private方法建立任何新的测试。

问:但是,如果private方法确实出现问题了怎么办?如果确实希望用测试来弄清一个private方法里面到底发生了什么,该怎么办?

答:如果一个private方法复杂到你不能一眼看清它,那它就太复杂了,你应该把它重构成为一个独立的class,然后针对这个class来建立单元测试。

 

 

 

posted on 2008-04-16 20:54 离弦之ray的技术天空 阅读(2017) 评论(3)  编辑  收藏

Feedback

# re: [转]如何对private方法进行单元测试[未登录] 2008-09-04 16:20 xan
可以通过反射设置方法能见来测试private方法  回复  更多评论
  

# re: [转]如何对private方法进行单元测试 2008-10-10 16:39 毕竟红尘
我反正都是通过main来测试private函数...
这个解答得很微妙
因为private都是重构的产物,所以private的代码是不需要测试的?
那么是不是还应该证明,“重构的产物是不需要测试的”?
解答里面,似乎是想通过“重构是可以不改变程序之行为”来证明“,“重构的产物是不需要测试的”?”

但是,紧接着是不是应该证明下“重构不改变程序之行为,所以不改变程序行为的代码,是不需要测试的”?

绕啊...
  回复  更多评论
  

# re: [转]如何对private方法进行单元测试 2008-10-26 00:19 离弦之ray的技术天空
这个回答是在纯理想化的情况下

现实中嘛就……

除了反射,还可以用MOCK的方法来测试
即编写一个Mock类继承要被测试的类
然后将对应的private方法overriding成public的继而进行测试

  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问