【发布时间】:2012-01-25 19:23:45
【问题描述】:
我知道@VisibleForTesting 是不可取的,因为它只是为了测试目的而更改类的接口。理想情况下,我们应该测试我们实际使用的接口。但是什么是好的选择呢?
【问题讨论】:
-
欢迎将代码发布到CodeReview.SE。
-
我的真正意思是一个一般性问题,而不是需要重构的特定代码。
标签: refactoring easymock
我知道@VisibleForTesting 是不可取的,因为它只是为了测试目的而更改类的接口。理想情况下,我们应该测试我们实际使用的接口。但是什么是好的选择呢?
【问题讨论】:
标签: refactoring easymock
如您所说,当您想要测试您未向最终用户公开的部分代码时,您可以使用@VisibleForTesting。如果你想测试它,那么它很可能意味着它很复杂,或者至少不是微不足道的。两种解决方案是:
当事情开始变得复杂时,我非常喜欢 #2,因为我可以拥有一个外部对象,我可以测试并确保它可以正常工作,而无需通过我们的界面公开它。
话虽如此,有时行为并不保证将方法提取到新对象中,您使用@VisibleForTesting 只是为了节省时间。经验会告诉您什么时候值得(或不值得)这样做。
【讨论】: