2013-10-30 129 views
5

我有一个库,它是相当大的,但只公开一个非常小的API,以方便使用和学习新的用户。我想以这种方式来保存我的图书馆,但我也想确保尽可能多地使用单元测试覆盖率,我希望能够直接对所有课程进行单元测试,但只要我可以告诉我可以只有单元测试库的公共API。镖,单元测试私有方法

我当然可以编写单元测试来全面测试公共方法,这将有效地间接测试所有底层的私有类,但是如果测试失败,这可能意味着需要在私有代码中进行大量挖掘才能找到在哪里出了问题,而不是为每个单独的私人课程进行单元测试,因此当出现问题时立即就会发现哪里出了问题,哪里出了问题。

有一个设计模式,以帮助这一情况或进行单元测试的方式为私人镖类和方法来写?

+0

我想通过每一个公开测试类没有增加任何的下层专用类,这样我可以通过暴露测试类直接测试,只是告诉用户忽略anythign与开始扩大公开所有私有成员“测试”,但这看起来很脏 – 0xor1

+1

你可以将你的库分成多个库吗?如果您将私人课程移到同一个应用程序中的单独的库中,那么您可以将它们公开并测试它们。然后,您可以将它们导入当前的库中,而不导出它们(因此,只要不自己导入其他库,库的用户仍不能使用其他类)。 –

+0

如此简单的天才! – 0xor1

回答

7

如果你移动你的私有类为在同一应用程序独立的库,那么你可以让他们公开并进行测试。然后,您可以在当前库中导入该库并不导出它(因此,只要库本身不导入其他库,库的用户仍然无法使用其他类)。