我有一个非常大的库但只暴露了一个非常小的API,以便于新用户使用和学习。我想以这种方式保留我的图书馆,但我也想确保我有尽可能多的单元测试覆盖率,我希望能够直接对我的所有课程进行单元测试,但据我所知,我可以只有单元测试库的公共API。
当然,我可以编写单元测试来完全测试公共方法,这些方法将有效地间接测试所有底层私有类,但如果测试失败,则可能意味着需要在私有代码中进行大量挖掘才能找到出现问题的地方,而不是对每个私人班级进行单元测试,所以当出现问题时,会立即发现出错的地方和位置。
是否有设计模式可以帮助解决这种情况或为私人飞镖类和方法编写单元测试的方法?
答案 0 :(得分:10)
如果您将私有类移动到同一应用程序中的单独库中,则可以将它们公开并测试它们。然后,您可以在当前库中导入该库而不导出它(因此,只要他不自己导入其他库,您的库用户仍然无法使用其他类。)