将私有方法更改为受保护以进行测试

min*_*nil 8 java junit

将私有方法更改为受保护的JUNIT测试是否是个好主意.

JB *_*zet 9

它有时是有用的,是的.

如果类是可扩展的,请确保使方法最终.

另外,请记录该方法不应由同一包的子类或外部类调用的事实.

我使用Guava @VisibleForTesting注释来明确该方法实际上应该是私有的.


Pet*_*rey 5

您可以将方法包改为本地。

您可以使用反射调用私有方法,或者您可以决定private不应该直接测试方法,而只能间接测试方法。


Kai*_*Kai 5

一般不是没有.单元测试的想法是测试......单元.或者换句话说,接口方法的实现.如果你想测试一个你无法"看到"的方法,这可能是代码味道.也许你还没有将你的业务逻辑与UI代码或其他东西分开.

所以最好的想法是重新思考你的架构.但如果替代方案是不测试您的代码,那么使这些方法受到保护是个好主意.