使用RhinoMocks测试私有方法

Los*_*ost 4 c# tdd rhino-mocks

我在TDD环境中工作,基本上我面临着一个两难的问题,我认为这在TDD环境中非常重要.作为程序员,您希望您的方法尽可能可读.为此,我们倾向于在多个私有方法中对方法进行分区.在这样做时,所有移动到私有函数的代码都失去了它的测试能力.

Rhino测试类无法看到所有这些私有方法,我也需要能够针对这些方法运行测试.我不希望它们被公开,因为将它们公开是没有意义的.

有任何想法吗?

ole*_*sii 8

如果我问你问题的一部分:

[...]我们倾向于在多个私有方法中划分我们的方法[...]

这是错的.如果您遵循单一责任原则和良好的OOP设计,您的方法将更加独立和简单.如果您想要提取另一种私有方法以使您的公众看起来更短,请先考虑一下.也许,你可以在一个单独的类中重构它?

您不测试私有方法,因为您测试公共合同而不是实现的详细信息.如果你想拥有与私有方法测试类似的东西,请将它们设置为内部并设置InternalsVisibleTo属性.

另一种方法(由R. Harvey指出)是编写一个包装类,将私有方法包装到公共方法中.这种方法的好处是您不需要将私有方法设置为内部方法.缺点是,对于每个私有方法,您将拥有一个包装器公共方法.所以方法的数量可能会翻倍.