在单元测试中如何测试私有方法

发表于:2012-10-15 11:29

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  在单元测试用例的开发过程中遇到需要测试私有方法的地方往往会给开发人员带来很大的困扰。

  在http://blog.developers.ba/post/2009/04/12/Unit-testing-private-methods-yes-or-no.aspx 这篇blog中,博主也提到了类似的问题。

  1、需要对私有方法进行测试吗?

  2、如何测试?是调整私有方法的访问权限或是通过public来测试。

  3、对私有方法进行测试是不是意味着代码中有了bad smell。

  4....

  接下来谈谈我的感受吧

  1、是不是需要对一个方法(无论是public或是private)取决于这个函数的复杂度和价值,并不是所有的function都要测试的,除非需要追求很高的测试覆盖率。这样的话是否需要对一个private方法进行测试就看这个private方法是不是比较重要、复杂、容易出错,其实这个原则也适用于Public的方法,你总不会去测试java的setter和getter吧。

  2、很多时候private的方法的测试时可以通过对public方法的测试间接来达到的。一个设计良好的、充分运用TDD的工程完全可以通过对public方法提供完整的用例就可以覆盖private方法。

  3、仅仅为了能够进行单元测试,而采用将private方法改成public方法通常是不合适的,这样会暴露出不该暴露的实现细节,另外接口过多也破坏了SRP(单一职责原则)。

  4、当你非常渴望测试一个private方法的时候,可以仔细评估这个private方法和目前所在类的关系,这样的private方法是不是应该迁移到另一个类中,在另一个类中作为public提供接口给调用方(我通常这么干)。

  5、最后一个测试private的途径就是利用语言提供的反射功能,在testcase中将private方法修改成public的,以此来实现对private方法的测试。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号