【问题标题】:dart, unit testing private methods飞镖,单元测试私有方法
【发布时间】:2013-11-09 18:13:20
【问题描述】:

我有一个非常大的库,但只公开了一个非常小的 API,以便新用户易于使用和学习。我想以这种方式保留我的库,但我也想确保我有尽可能多的单元测试覆盖率,我希望能够直接对我的所有类进行单元测试,但据我所知,我可以只对库的公共 API 进行单元测试。

当然,我可以编写单元测试来全面测试公共方法,这将有效地间接测试所有底层私有类,但如果测试失败,可能意味着需要大量挖掘私有代码以找出答案哪里出了问题,而不是对每个单独的私有类进行单元测试,所以当出现问题时,它会立即很明显哪里出了问题。

是否有一种设计模式可以帮助解决这种情况,或者有一种方法可以为私有 dart 类和方法编写单元测试?

【问题讨论】:

  • 我正在考虑通过从每个成员扩展一个公共测试类来公开所有私有成员,该类不会向底层私有类添加任何内容,这样我就可以直接测试暴露的测试类并告诉用户忽略以“Test”开头的任何东西,但这看起来很脏
  • 你能把你的图书馆分成多个图书馆吗?如果您将私有类移动到同一应用程序中的单独库中,那么您可以将它们公开并测试它们。然后,您将它们导入您当前的库而不是导出它们(因此,您的库的用户仍然不能使用您的其他类,只要他自己不导入其他库)。
  • 它的天才如此简单!
  • 哦,如果是天才,我会把它变成答案:)
  • 在意识到这些可能是骗子之前,我在另一个答案上回答了这个问题,但另请参阅 @visibleForTesting 这里 stackoverflow.com/questions/21657315/…

标签: unit-testing dart


【解决方案1】:

如果您将私有类移动到同一应用程序中的单独库中,则可以将它们公开并进行测试。然后,您将在当前库中导入该库而不是导出它(因此,只要您的库的用户自己不导入该其他库,他就仍然无法使用您的其他类)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多