我已经查看了有关该主题的其他讨论(在 StackOverflow 上),但是其他问题似乎是特定于语言的,而这不是特定于语言的,我正在考虑不再使用私有方法、类和模块。
我想测试我的私有方法、类和模块,以便更容易找到错误。为了允许我这样做,我正在考虑不再使用私有方法、类和模块,原因有两个:(1)我认为没有任何合理的方法可以在不注入测试代码或使用某种类型的情况下测试私有方法、类或模块的“魔术”和(2)提高代码重用。请注意,我不考虑不再使用私有变量和属性,因为数据需要保护并且不提供行为,因此它不需要在测试期间公开。
作为一个蹩脚的例子,如果你正在编写一个名为的模块OneOperations
,它有两个公共方法addOne
andsubtractOne
和两个私有方法add
and subtract
。如果您不允许自己拥有私有方法,您可以将这两个私有方法放入另一个模块(basicOperations
)中,它们是公共的,并在OneOperations
模块中导入这些方法。从此,您现在应该能够为两个模块中的所有方法编写测试代码,而无需注入代码。这样做的一个优点是方法add
和subtract
现在可以通过导入basicOperations
模块在其他模块中使用(2 - 改进代码重用)。
我觉得这是个坏主意,但我缺乏现实世界的经验来证明不这样做是合理的,这就是我在 StackOverflow 上发布这个问题的原因。
那么,你如何测试你的私有方法、类和模块呢?编写私有方法、模块和类不是一个潜在的解决方案吗?