将私有方法更改为受保护的 JUNIT 测试是否是个好主意。?
问问题
3231 次
4 回答
9
它有时很有用,是的。
如果该类是可扩展的,请确保将方法设为 final。
此外,记录该方法不应由同一包的子类或外部类调用的事实。
我使用 Guava @VisibleForTesting 注释来明确该方法实际上应该是私有的。
于 2012-04-13T13:24:53.807 回答
6
不,一般不会。单元测试的想法是测试……单元。或者换句话说,接口方法的实现。如果您想测试一个您无法“看到”的方法,这可能是代码异味。也许您还没有将业务逻辑与 UI 代码或其他东西充分分离。
所以最好的想法是重新考虑你的架构。但是,如果替代方案是不测试您的代码,那么保护这些方法是个好主意。
于 2012-04-13T13:28:25.183 回答
5
您可以改为将方法包本地化。
您可以使用反射调用私有方法,或者您可以决定private
不直接测试方法,只间接测试。
于 2012-04-13T13:25:24.013 回答
1
尽管您应该更喜欢按照@user714965 的建议进行重构,但 PowerMock 的MockPrivate可以在不打开私有方法的可见性的情况下进行模拟。
首先编写测试通常会导致您不需要模拟私有方法的设计。
于 2012-04-13T18:33:36.580 回答