@VisibleForTesting的替代品

时间:2011-12-22 03:04:59

标签: refactoring easymock

我知道@VisibleForTesting是不可取的,因为它只是出于测试目的而改变了类的接口。理想情况下,我们应该测试我们实际使用的接口。但是什么是一个好的选择呢?

1 个答案:

答案 0 :(得分:38)

如果您正如您所说,您想要测试一部分您未向最终用户公开的代码,则使用@VisibleForTesting。如果你想测试它,那很可能意味着它很复杂,或者至少不是微不足道的。两种解决方案是:

  1. 将您调用此方法的方法拆分为多种方法,这样您就不会有一种大方法同时处理大量内容。
  2. 查看是否可以将行为移动到处理它的外部对象。
  3. 当东西开始变得复杂时,我非常喜欢#2,因为我可以有一个外部对象,我可以测试并确保它可以工作,而不必通过我们的界面公开它。

    话虽如此,有时行为并不能保证将方法提取到新对象中,而只使用@VisibleForTesting来节省时间。经验就是告诉你什么时候这样做是值得的。