【问题标题】:When is it ok to test private method?什么时候可以测试私有方法?
【发布时间】:2014-01-07 10:53:15
【问题描述】:

我对测试私有方法提出了几个不同的意见。我想知道截至今天,私有方法测试的实际约定是什么。可以测试它们吗?

如果不是,为什么有这么多的测试工具可以测试它们?我正在使用scalatest,并且有一些东西。我相信这一定是因为在某些情况下它非常有用。另一方面,我建议,例如,测试行为而不是方法。

因此,由于这种困惑,我想知道是否有人可以分享他在这件事上的经验和智慧。什么时候适合测试它们,什么时候避免它们?一般准则是什么。

非常感谢

【问题讨论】:

    标签: testing methods private


    【解决方案1】:

    “测试行为而不是方法”是一个很好的方法。单元测试的含义是您从“用户”的角度测试您的类。并且您的所有私有方法最终都应该从您的公共方法中调用。否则为什么他们一开始就在你的班上?

    简而言之 - 您应该始终从您的公共方法中间接测试您的私有方法。

    【讨论】:

    • 感谢您的回答丹尼斯。但是,您如何证明大多数框架中存在特殊支持来测试私有方法是合理的?有什么意义?
    • 另外我必须承认,我发现自己在编写私有方法时感觉很奇怪,并且不得不以某种方式打破这个 TDD 循环。这意味着,对于私有方法,无论如何我都会手动测试,以确保它产生我想要的东西,同时为我的公共方法应用真正的 TDD。例如。我会在测试我的公共行为和手动测试我的私有方法时申请。我只是觉得很奇怪。使用 TDD 技术分解代码和思想非常有用,但必须回滚到私有方法的旧习惯
    • 对吗?对我来说,不要打破 TDD 循环,那么最好的方法就是打破我的测试。更具体地说,如果我的方法真的代表了我行为的内部步骤,那么我的测试应该检查所有这些步骤的结果。例如,使用“Given When Then”+“And”,And 关键字允许连接“结果检查”或“条件”。因此,人们可以通过使用“与”检查不同步骤的结果来逐步测试所有行为。所以从某种意义上说,你会用“Then”测试第一个私有方法,用“And”测试第二个,依此类推......
    猜你喜欢
    • 2016-12-19
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 2011-02-24
    • 2019-10-10
    相关资源
    最近更新 更多