我知道 @VisibleForTesting 是不可取的,因为它只是为了测试目的而更改了类的接口(interface)。理想情况下,我们应该测试我们实际使用的接口(interface)。但是什么是一个好的选择呢?
最佳答案
您使用 @VisibleForTesting
正如您所说,当您想要测试您未向最终用户公开的部分代码时。如果你想测试它,那么它很可能意味着它很复杂,或者至少不是微不足道的。两种解决方案是:
当事情开始变得复杂时,我非常喜欢#2,因为我可以拥有一个可以测试的外部对象,并确保它可以正常工作,而无需通过我们的界面公开它。
话虽如此,有时行为并不保证将方法提取到新对象中,您使用
@VisibleForTesting
只是为了节省时间。经验告诉你什么时候值得(或不值得)去做。
关于refactoring - @VisibleForTesting 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8599023/